La création de C formaté des chaînes de caractères (ne pas imprimer)

J'ai une fonction qui accepte une chaîne de caractères, c'est:

void log_out(char *);

À l'appeler, j'ai besoin de créer une chaîne formatée, à la volée, comme:

int i = 1;
log_out("some text %d", i);

Comment puis-je le faire en C ANSI?


Seulement, depuis sprintf() retourne un int, ce qui signifie que je dois écrire au moins 3 commandes, comme:

char *s;
sprintf(s, "%d\t%d", ix, iy);
log_out(s);

Tout moyen de raccourcir ce?

  • J'ai confiance que le prototype de fonction est vraiment: extern void log_out(const char *, ...); parce que si elle ne l'est pas, l'appel est erronée (trop d'arguments). Il convient de prendre un pointeur const car il n'y a aucune raison pour log_out() pour modifier la chaîne. Bien sûr, vous pourriez dire que vous souhaitez passer une seule chaîne à la fonction mais ne le peuvent pas. Une option consiste alors à écrire un varargs version de la log_out() fonction.
InformationsquelleAutor pistacchio | 2009-04-29