Je me demande si c'est la bonne façon de concatenate
et NUL
terminer les chaînes, y compris la largeur.concaténation des chaînes et snprintf en c
#define FOO "foo"
const char *bar = "bar";
int n = 10;
float f = 10.2;
char *s;
int l;
l = snprintf (NULL, 0, "%-6s %-10s %4d %4f",FOO, bar, n, f);
s = malloc (l + 4); // should it be the number of formats tags?
if (s == null) return 1;
sprintf (s, "%-6s %-10s %4d %4f", FOO, bar, n, f);
Il peut être judicieux, à des fins de maintenance, de définir une chaîne de format utilisée par 'snprintf' et' sprintf'. Ça serait vraiment nul si ça changeait à un endroit et pas à l'autre! –
Cela semble une bonne idée, serait-il possible de poster un exemple de code en référence à cela? Merci – Lucas
Juste déclarer quelque chose comme 'const char * fmt_str ="% -6s% -10s% 4d% 4f ";' et l'utiliser comme chaîne de format dans les deux endroits. –