2010-04-28 5 views

Répondre

8

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 */ 

GNU has an example too.

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.

+1

+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 . –

2

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"); 
+4

Je pense que vous voulez dire sprintf, fprintf imprime dans les fichiers –

+1

Aussi, utilisez 'snprintf' plutôt que' sprintf'. – dreamlax

+0

ah oui. pour autant que je me souvienne, fprintf prend un 'fd' pas un pointeur réel. –