Je cherche à construir un buffeur pour une requete SQL et je ne connais pas le nombre d'arguments que je doit passer.
EXEMPLE, SI j'ai un nombre d'argument fixe, je fait :
char param1[12], param2[12];
char *format="UPDATE t_table set col1='%s', col2='%s'";
......
sprintf(buff,format,param1,param2);
Mais dans le cas present je ne sait pas quelles colonnes seront mise a jour,
Je construis ma chaine "UPDATE .." par concatenation avec les colonnes necessaires;
char format[100]="UPDATE t_table set "; int i=0;
char *param[8];
if( bon1 ){ strcat( fromat," col1='%s',"); param[i++]=param1;}
if( bon2 ){ strcat( fromat," col2='%s',"); param[i++]=param2;}
..
vsprintf( buff,format,param);
ET ça sa ne marche pas vsprintf veut un va_list pour troisième argument.
Mon problème est donc de donner un tableau à "v/sprintf" plutot qu'une liste en troisieme argument.
@+
Partager