1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
enum Type {TYPE_INT, TYPE_LONG, TYPE_DOUBLE, TYPE_STRING, TYPE_NB};
typedef void (Fonction)(va_list *p);
void affint(va_list *p)
{
int i = va_arg(*p, int);
printf("int: %d\n", i);
}
void affilong(va_list *p)
{
long l = va_arg(*p, long);
printf("long: %ld\n", l);
}
void affidouble(va_list *p)
{
double f = va_arg(*p, double);
printf("double: %f\n", f);
}
void affichar(va_list *p)
{
const char *s = va_arg(*p, const char *);
printf("STRING: %s\n", s);
}
int lecture(char *format, ...)
{
Fonction *point[] = {
&affint,
&affilong,
&affidouble,
&affichar
};
va_list p_list;
va_start(p_list, format);
point[TYPE_INT](&p_list);
point[TYPE_LONG](&p_list);
point[TYPE_DOUBLE](&p_list);
point[TYPE_STRING](&p_list);
va_end(p_list);
return 0;
}
int main(void)
{
lecture("NOT USED FOR THE MOMENT", 100, 200, 3.1415, "DVP.com");
return EXIT_SUCCESS;
} |
Partager