2010-12-05 10 views
2

Y at-il une fonction standard C qui vous permet de créer des chaînes en utilisant spécificateurs de format?Créer une chaîne en C avec un spécificateur de format

En ce moment je fais ceci:

char buffer[256]; 
char *name = "Fred"; 
strcpy(buffer, "Hello, "); 
strcat(buffer, name); 
strcat(buffer, ". How are you today?\n"); 

Y at-il un moyen d'ajouter le message à mémoire tampon dans une fonction?

Quelque chose comme ceci:

makestr(buffer, "Hello, %s. How are you today?\n", name); 

Répondre

8

sprintf

Soyez prudent lorsque vous utilisez parce que sprintf n'est pas une fonction de sécurité et peut souffrir de buffer overflows.

+1

Je remettrais cette réponse si ce n'était pas pour la prétention ridicule que sprintf n'est pas sûr. Il est parfaitement sûr si vous savez ce que vous faites et les gens qui ne savent pas ce qu'ils font devraient probablement utiliser BASIC au lieu de C :-) – paxdiablo

+0

Recommandez-vous snprintf pour éviter le risque de débordement de tampon? – mouche

1

Would sprintf être utile pour vous? Lien: sprintf