WPRINTF(3) Manuel du programmeur Linux WPRINTF(3)
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Formater
des chaînes de caractères larges
#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, ...);
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);
Exigences de macros de test de fonctionnalités pour la glibc (voir fea‐
ture_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 car‐
actè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
flux. flux 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 lngmax 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 lngmax, con‐
trairement à sprintf(3) et vsprintf(3) (snprintf(3) et
vsnprintf(3) 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 con‐
verti en un caractère large par un appel à la fonction btowc(3)
et le caractère large en résultant est écrit. Si un modifica‐
teur 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 com‐
mençant à l’état initial. Les caractères du tableau sont con‐
vertis en caractères larges (un par un par l’appel de la fonc‐
tion mbrtowc(3) avec un état de conversion réinitialisé avant
le premier octet). La chaîne de caractères larges en résul‐
tant 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 car‐
actère nul final à moins que la taille donnée soit inférieure
ou égale au nombre de caractères larges du tableau.
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.
C99.
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 pro‐
gramme 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 compila‐
tion. 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 architec‐
tures ne font pas de même. De plus, l’utilisation des noms de car‐
actè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 internation‐
alisée (en utilisant par exemple gettext(3) ou iconv(3), suivi de
mbstowcs(3)).
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3).
Cette page fait partie de la publication 3.07 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse http://www.ker‐
nel.org/doc/man-pages/.
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@cen‐
traliens.net> et l’équipe francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant Ã
<debian-l10n-french [AT] lists.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> ».
GNU 26 juillet 2007 WPRINTF(3)