Vous pouvez nous les fonctions de style vsprintf pour obtenir l'impression de style printf pour votre paramètre de longueur variable. Cependant, il n'y a pas besoin de le faire. Vous pouvez si vous choisissez écrire votre fonction pour continuer à accepter les paramètres jusqu'à ce qu'il rencontre un pointeur nul.
va_list ap;
char *param;
va_start(ap,fmt);
param = va_arg(ap,char*);
while(param)
{
do something...
param = va_arg(ap,char*);
}
ou vous pouvez avoir le nombre de paramètres comme la première à votre fonction param
void my_printf(int param_num,...)
{
va_list ap;
char *param;
va_start(ap,fmt);
while(param_num)
{
do something...
param = va_arg(ap,char*);
param_num--;
}
}
Son vraiment à vous, les possibilités sont illimitées. Je pense que la seule exigence réelle pour les ellipses est qu'il y ait au moins un paramètre avant les ellipses.
Comment allez-vous savoir que le tampon est assez grand? Et vous devriez vraiment retourner le nombre de conversions effectuées par sprintf(), sinon les utilisateurs n'ont aucun moyen de connaître la fonction travaillée. –
J'ai rayé tout ce qui n'était pas essentiel pour illustrer mon propos. Évidemment dans mon code de version je suis beaucoup plus approfondie :) – Mike