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
| #include <stdio.h>
#include <stdarg.h>
// "Vraie" fonction, faisant réellement le travail attendu.
void vfmtstring ( char* fmt, va_list arg_ptr ) {
// Traitement du va_list.
for (int i=0;fmt[i];i++)
switch (fmt[i]) {
case 'I' :
printf("\t%d\n",va_arg(arg_ptr,int));
break;
case 'C' :
printf("\t%s\n",va_arg(arg_ptr,char*));
break;
case 'H' :
printf("\t%08X\n",va_arg(arg_ptr,char*));
break;
default :
printf("\t<<ERROR>>\n",va_arg(arg_ptr,void*));
return;
}
}
// Fonction destinée à l'utilisateur, afin d'autoriser les paramètres variadiques.
// Appelle vfmtstring, ne fait rien d'autre.
void fmtstring ( char* fmt, ... ) {
va_list arg_ptr ;
va_start(arg_ptr,fmt) ;
vfmtstring(fmt,arg_ptr) ;
va_end(arg_ptr) ;
}
int main ( void ) {
fmtstring("ICH",1654,"test",987564);
fmtstring("CHI","test2",0,0);
return 0 ;
} |
Partager