Ciao a tutti. Sto cercando di capire meglio come usare le functions dentro il stdarg.h , tra le quali anche la va_list (voglio creare una funzione che stampa un numero indeterminato di argomenti, non necessariamente dallo stesso tipo, per es: int, char, stringa).
Allora, la funzione che ho come esempio la vedete qua sotto. Questa funzione usa come primo parametro un formato per sapere cosa viene passato negli argomenti successivi. La funzione al tempo di run mi da il seguente errore: 'char' is promoted to 'int' when passed through '...' [enabled by default].
Il codice è il seguente:
codice:
#include <stdio.h>
#include <stdarg.h>
void print_lista_argomenti(char *fmt, ...){
va_list ap;
int d;
char c;
char *s;
va_start (ap,fmt);
while(*fmt)
switch (*fmt++){
case 's': //una stringa
s=va_arg(ap,char *);
printf ("stringa : %s\n",s);
break;
case 'd': //un intero
d=va_arg(ap, int);
printf("Un intero: %d\n", d);
break;
case 'c': //un char
c=va_arg(ap, char);
printf("un carattere: %c\n",c);
break;
}
va_end (ap);
}
void main(void){
//print_lista_argomenti ("sdc", "stringa", (int) 3, (char) 'k');
print_lista_argomenti ("c", (char)'p');
}