Loading

NOM

       wprintf,  fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Formater
       des chaînes de caractères larges

SYNOPSIS

       #include <stdio.h>
       #include <wchar.h>

       int wprintf(const wchar_t *format, ...);
       int fwprintf(FILE *stream, const wchar_t *format, ...);
       int swprintf(wchar_t *wcs, size_t maxlen,
                    const wchar_t *format, ...);

       int vwprintf(const wchar_t *format, va_list args);
       int vfwprintf(FILE *stream, const wchar_t *format, va_list args);
       int vswprintf(wchar_t *wcs, size_t maxlen,
                     const wchar_t *format, va_list args);

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

       Toutes les fonctions ci-dessus : _XOPEN_SOURCE >= 500 ||
       _ISOC99_SOURCE ; ou cc -std=c99

       La famille de fonctions wprintf() est l’équivalent pour les  caractères
       larges  de  la famille de fonctions printf(3). Elle réalise une mise en
       forme des caractères larges.

       Les fonctions wprintf() et vwprintf() réalisent  le  traitement  et  la
       sortie  de  chaînes de caractères larges sur stdout. stdout ne doit pas
       être orienté caractères (voir fwide(3) pour plus d’informations).

       Les fonctions fwprintf() et vfwprintf() réalisent la mise en  forme  de
       chaînes  de  caractères  larges  en  vue d’une écriture dans le fichier
       stream. stream ne doit pas être orienté caractères (voir fwide(3)  pour
       plus d’informations).

       Les  fonctions  swprintf()  et  vswprintf()  réalisent la mise en forme
       d’une chaîne de caractères larges avant de l’écrire dans un tableau  de
       caractères  larges.  Le programmeur doit s’assurer qu’il y ait assez de
       place pour au moins maxlen caractères larges dans wcs.

       Ces fonctions se comportent  de  la  même  manière  que  les  fonctions
       printf(3),   vprintf(3),   fprintf(3),   vfprintf(3),   sprintf(3)   et
       vsprintf(3), hormis les différences suivantes :

       ·      La chaîne format est composée de caractères larges.

       ·      La sortie est faite de caractères larges, pas d’octets.

       ·      swprintf()  et  vswprintf()   prennent   un   argument   maxlen,
              contrairement   à  sprintf(3)  et  vsprintf(3)  (snprintf(3)  et
              vsnprintf(3) prennent un argument maxlen, mais ces fonctions  ne
              renvoient pas -1 en cas de débordement mémoire sous Linux).

       Le traitement des caractères de conversion c et s est différent :

       c      Si  aucun  modificateur  l  n’est  présent,  l’argument  int est
              converti en un caractère  large  par  un  appel  à  la  fonction
              btowc(3)  et  le  caractère  large en résultant est écrit. Si un
              modificateur l est présent, l’argument wint_t (caractère  large)
              est écrit.

       s      Si  aucun  modificateur l n’est présent, l’argument const char *
              est interprété comme un pointeur sur un  tableau  de  caractères
              (une   chaîne)  contenant  une  séquence  de  caractères  larges
              commençant à l’état initial.  Les  caractères  du  tableau  sont
              convertis  en  caractères  larges  (un  par un par l’appel de la
              fonction mbrtowc(3) avec  un  état  de  conversion  réinitialisé
              avant  le  premier  octet).  La  chaîne  de caractères larges en
              résultant est écrite jusqu’au dernier caractère (non compris  le
              caractère  nul  final).  Si  la  taille est donnée, le nombre de
              caractères larges écrits ne la dépassera pas. Notez bien que  la
              taille détermine le nombre de caractres larges écrits et non le
              nombre  d’octets  ou  de  positions  dcran.  Le  tableau  doit
              contenir  un  caractère  nul final, à moins que la taille donnée
              soit si petite que le nombre de caractères  larges  est  atteint
              avant  la  fin  du  tableau.  Si un modificateur l est présent :
              l’argument const wchar_t* est interprété comme un  pointeur  sur
              un  tableau  de  caractères  larges.  Les  caractères  larges du
              tableau sont écrits jusqu’au dernier (non compris  le  caractère
              nul  final).  Si la taille est indiquée, le nombre de caractères
              écrits  ne  la  dépassera  pas.  Le  tableau  doit  contenir  un
              caractère nul final à moins que la taille donnée soit inférieure
              ou égale au nombre de caractères larges du tableau.

VALEUR RENVOYÉE

       Ces fonctions renvoient le nombre  de  caractères  larges  écrits,  non
       compris  le caractère nul final dans le cas des fonctions swprintf() et
       vswprintf(). Elles renvoient -1 en cas d’erreur.

CONFORMITÉ

       C99.

NOTES

       Le comportement de  wprintf()  et  compagnie  dépend  de  la  catégorie
       LC_CTYPE de la locale utilisée.

       Si  la  chaîne  format  contient  des  caractères  larges non ASCII, le
       programme ne fonctionnera correctement que si la catégorie LC_CTYPE  de
       la  localisation  lors  de  l’exécution  est  la  même  que  lors de la
       compilation.  En  effet,  la  représentation  de  wchar_t   dépend   de
       l’architecture   et   de  la  localisation.  La  glibc  représente  les
       caractères larges à l’aide de leurs codes Unicode (ISO-10646), mais les
       autres  architectures  ne  font pas de même. De plus, l’utilisation des
       noms de caractères universels de C99 (de la forme \unnnn) ne résout pas
       ce  problème. Aussi, la chaîne format ne devrait être constituée que de
       caractères larges dans les programmes internationalisés, ou alors  elle
       doit  être  construite  à  l’exécution de manière internationalisée (en
       utilisant par exemple gettext(3) ou iconv(3), suivi de mbstowcs(3)).

VOIR AUSSI

       fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3).

COLOPHON

       Cette page fait partie de  la  publication  3.23  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      être       trouvées       à       l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette  page  de  manuel a été traduite par Thierry Vignaud <tvignaud AT
       mandriva DOT com> en 2002, puis a été mise  à  jour  par  Alain  Portal
       <aportal  AT  univ-montp2  DOT fr> jusqu’en 2006, et mise à disposition
       sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

       Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « man -L C <section> <page_de_man> ».