Re: question de c

Top Page

Reply to this message
Author: Stephane Bonhomme
Date:  
To: mailing liste Guilde
CC: Patrick Dupre
Subject: Re: question de c
il te faut utiliser stdarg.h qui permet de définir une fonction avec un
nombre de paramètres variables, tu peux alors utiliser ... pour
representer ta liste de paramètres (y compris dans la déclaration d'un
pointeur)

je joint un petit exemple

Le mar 30/03/2004 à 23:00, Patrick Dupre a écrit :
> Bonsoir,
>
> Je souhaite definir un pointeur sur une fonction retournant un type
> defini, mais aceptant un nombre non prefini d'element de type non
> predefini ! Je sais c'est pas tres conseille, mais c'est une question
> d'efficacite (controm minimum).
>
> Merci.


--
Stéphane Bonhomme

Exselt : Formations, Conseil et Réalisations en Ingénierie Documentaire, 
         Technologies Web et Logiciels Libres
         s.bonhomme@???     -     http://www.exselt.com
                    04 76 17 09 40 / 06 88 57 27 08

#include <stdio.h>
#include <stdarg.h>

void
foo (char *fmt, ...)
{
  va_list ap;
  int     d;
  char    c, *p, *s;


  va_start  (ap, fmt);
  while     (*fmt)
    switch  (*fmt ++) {
      case 's':
        s = va_arg (ap, char *);
        printf ("chaine %s\n", s);
        break;
      case 'd':
        d = va_arg (ap, int);
        printf ("int %d\n", d);
        break;
    }
  va_end (ap);
}


int main () {
void (*my_func) (char *fmt, ...);

my_func=foo;
(*my_func) ("hello %s","world");
(*my_func) ("%d + %d = %d",1,2,3);
return 1;
}