SNPRINTF(3) Manuel du programmeur Linux SNPRINTF(3)
NOM
snprintf, vsnprintf - Conversion de sortie formatée.
SYNOPSIS
#define _GNU_SOURCE
#include <stdio.h>
int snprintf (char *str, size_t n,
const char *format, ...);
#include <stdarg.h>
int vsnprintf (char *str, size_t n,
const char *format, va_list ap);
DESCRIPTION
La fonction snprintf écrit des donnees dans la chaîne str,
sous le controle de la chaîne format qui indique comment
les arguments suivants doivent être convertis. Elle est
similaire à sprintf(3), à la différence que n indique un
nombre maximum de caractères à écrire. Le caractère nul
final est compris dans cette limite, aussi vous devez
allouer au moins n caractères pour la chaine str.
vsnprintf est équivalent à snprintf avec une liste vari
able d'arguments fournie directement comme pour vprintf.
VALEUR RENVOYÉE
Si la sortie a été tronquée, la valeur renvoyée est -1,
sinon il s'agit du nombre de caractères écrits, sans
compter le caractère nul final.
EXEMPLES
Voici un programme qui élargit dynamiquement son buffer de
sortie.
/* construire un message décrivant la valeur de la
variable dont le nom est NAME et dont la valeur
est VALUE. */
char *
make_message (char *name, char *value)
{
/* Supposons que 100 caractères suffisent */
int size = 100;
char *buffer = (char *) xmalloc (size);
while (1)
{
/* Essayons d'écrire dans ce buffer */
int nchars = snprintf (buffer, size,
"La valeur de %s est %s", name, value);
/* Si ca marche renvoyer la chaîne. */
if (nchars > -1)
return buffer;
/* Sinon, recommencer en doublant l'espace. */
GNU 21 Juillet 1997 1
SNPRINTF(3) Manuel du programmeur Linux SNPRINTF(3)
size *= 2;
buffer = (char *) xrealloc (buffer, size);
}
}
CONFORMITÉ
Il s'agit d'extensions GNU.
VOIR AUSSI
printf(3), sprintf(3), vsprintf(3), stdarg(3)
TRADUCTION
Christophe Blaess, 1997.
GNU 21 Juillet 1997 2