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