Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
WPRINTF
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- CONFORMITÉ
- VOIR AUSSI
- NOTES
- TRADUCTION
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 *flux, const wchar_t *format, ...);
int swprintf(wchar_t *wcs, size_t lngmax,
const wchar_t *format, ...);
#include <stdarg.h>
int vwprintf(const wchar_t *format, va_list args);
int vfwprintf(FILE *flux, const wchar_t *format, va_list args);
int vswprintf(wchar_t *wcs, size_t lngmax,
const wchar_t *format, va_list args);
DESCRIPTION
La famille de fonctions wprintf() est l'équivalent pour les caractères
larges de la famille de fonctions printf(). 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 la fonction fwide() 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
flux. flux ne doit pas être orienté caractères (voir la fonction
fwide 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 lngmax caractères larges dans wcs.
Ces fonctions se comportent de la même manière que les fonctions
printf(), vprintf(), fprintf(), vfprintf(), sprintf() et
vsprintf(), 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 lngmax,
contrairement à sprintf() et vsprintf() (snprintf() et
vsnprintf() prennent un argument lngmax, 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() 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 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 caractères larges
écrits et non le nombre d'octets ou de positions d'écran. 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.
VOIR AUSSI
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3).
NOTES
Le comportement de wprintf() et compagnie dépend de la catégorie LC_CTYPE
de la localisation en cours.
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. GNU libc 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 gettext() ou iconv(), suivi de
mbstowcs()).
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.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|