si je veux construire un const char *
sur plusieurs arguments de type primitif, est-il un moyen de construire la chaîne en utilisant un semblable à la printf
?Chaîne concaténation dans C
Répondre
Vous êtes probablement pour snprintf.
int snprintf(char *str, size_t size, const char *format, ...);
Un exemple simple:
char buffer[100];
int value = 42;
int nchars = snprintf(buffer, 100, "The answer is %d", value);
printf("%s\n", buffer);
/* outputs: The answer is 42 */
Juste pour ajouter, vous n'avez pas réellement besoin d'utiliser snprintf
- vous pouvez utiliser la plaine ancienne sprintf
(sans l'argument de taille), mais il est plus difficile d'assurer que n caractères sont écrits dans la mémoire tampon. GNU a aussi une bonne fonction, asprintf
qui va allouer le tampon pour vous.
Vous pouvez utiliser sprintf, qui est exactement comme printf, sauf que le premier paramètre est un tampon où la chaîne sera placée.
Exemple:
char buffer[256];
sprintf(buffer, "Hello, %s!\n", "Beta");
Je pense que vous voulez dire sprintf, fprintf imprime dans les fichiers –
Aussi, utilisez 'snprintf' plutôt que' sprintf'. – dreamlax
ah oui. pour autant que je me souvienne, fprintf prend un 'fd' pas un pointeur réel. –
+1 Neat, cette page pour 'asprintf' a conduit à la documentation [Obstack] (http://www.gnu.org/software/libtool//manual/libc/Obstacks.html), qui semble très utile dans certaines situations . –