Prova questo semplice programmino:
codice:
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
void funz_vararg (char *formato, ...)
{
size_t len, i;
va_list ptr;
va_start (ptr, formato);
len = strlen (formato);
for (i = 0; i < len; i++)
{
if (formato[i] == 'C')
{
char val = va_arg (ptr, char);
printf ("Parametro char: %c\n", val);
}
else if (formato[i] == 'I')
{
int val = va_arg (ptr, int);
printf ("Parametro int: %d\n", val);
}
else if (formato[i] == 'S')
{
char *val = va_arg (ptr, char*);
printf ("Parametro char*: %s\n", val);
}
}
va_end (ptr);
}
int main (void)
{
funz_vararg ("IS", 10, "ciao");
printf ("-----------\n");
funz_vararg ("CISC", 'A', 24, "prova", 'Z');
return 0;
}
Se non è chiaro, spiego.