wprintf
Section: C Library Functions (3)
Updated: 5 février 2023
Index
Return to Main Contents
NOM
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Formater des
chaînes de caractères larges
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <stdio.h>
#include <wchar.h>
int wprintf(const wchar_t *restrict format, ...);
int fwprintf(FILE *restrict stream,
const wchar_t *restrict format, ...);
int swprintf(wchar_t wcs[restrict .maxlen], size_t maxlen,
const wchar_t *restrict format, ...);
int vwprintf(const wchar_t *restrict format, va_list args);
int vfwprintf(FILE *restrict stream,
const wchar_t *restrict format, va_list args);
int vswprintf(wchar_t wcs[restrict .maxlen], size_t maxlen,
const wchar_t *restrict format, va_list args);
Exigences de macros de test de fonctionnalités pour la glibc (consulter
feature_test_macros(7)) :
Pour toutes les fonctions ci-dessus :
" _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE
|| _POSIX_C_SOURCE >= 200112L
DESCRIPTION
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é octet (consultez 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é octet (consultez 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 une chaîne 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 multioctets commençant à l'état initial
de décalage . 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 caractère NULL
final (L'\0') non compris. Si la précision est donnée, le nombre de
caractères larges écrits ne la dépassera pas. Notez bien que la précision
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 octet
NULL final ('\0'), à moins que la précision donnée soit si petite
que le nombre de caractères larges convertis 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 caractère NULL final non
compris. Si la précision est indiquée, le nombre de caractères écrits ne la
dépassera pas. Le tableau doit contenir un caractère NULL final à moins que
la précision 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 NULL final dans le cas des fonctions swprintf() et
vswprintf(). Elles renvoient -1 en cas d'erreur.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface | Attribut | Valeur
|
wprintf(),
fwprintf(),
swprintf(),
vwprintf(),
vfwprintf(),
vswprintf()
| Sécurité des threads | MT-Safe locale
|
STANDARDS
POSIX.1-2001, POSIX.1-2008, C99.
NOTES
Le comportement de wprintf() et autres dépend de la catégorie LC_CTYPE
de la régionalisation 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
régionalisation 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
régionalisation. 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 ASCII 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)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>,
Frédéric Hantrais <fhantrais@gmail.com>
et
Grégoire Scano <gregoire.scano@malloc.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ATTRIBUTS
-
- STANDARDS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:31:49 GMT, May 18, 2024