wprintf(3) Library Functions Manual wprintf(3) NOM wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - Formater des chaines de caracteres larges BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include #include 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 fonctionnalites pour la glibc (consulter feature_test_macros(7)) : Pour toutes les fonctions ci-dessus : " _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE0 || _POSIX_C_SOURCE >= 200112L DESCRIPTION La famille de fonctions wprintf() est l'equivalent pour les caracteres larges de la famille de fonctions printf(3). Elle realise une mise en forme des caracteres larges. Les fonctions wprintf() et vwprintf() realisent le traitement et la sortie de chaines de caracteres larges sur stdout. stdout ne doit pas etre oriente octet (consultez fwide(3) pour plus d'informations). Les fonctions fwprintf() et vfwprintf() realisent la mise en forme de chaines de caracteres larges en vue d'une ecriture dans le fichier flux. flux ne doit pas etre oriente octet (consultez fwide(3) pour plus d'informations). Les fonctions swprintf() et vswprintf() realisent la mise en forme d'une chaine de caracteres larges avant de l'ecrire dans un tableau de caracteres larges. Le programmeur doit s'assurer qu'il y ait assez de place pour au moins maxlen caracteres larges dans wcs. Ces fonctions se comportent de la meme maniere que les fonctions printf(3), vprintf(3), fprintf(3), vfprintf(3), sprintf(3) et vsprintf(3), hormis les differences suivantes : o La chaine format est une chaine de caracteres larges. o La sortie est faite de caracteres larges, pas d'octets. o swprintf() et vswprintf() prennent un argument maxlen, contrairement a sprintf(3) et vsprintf(3) (snprintf(3) et vsnprintf(3) prennent un argument maxlen, mais ces fonctions ne renvoient pas -1 en cas de debordement memoire sous Linux). Le traitement des caracteres de conversion c et s est different : c Si aucun modificateur l n'est present, l'argument int est converti en un caractere large par un appel a la fonction btowc(3) et le caractere large en resultant est ecrit. Si un modificateur l est present, l'argument wint_t (caractere large) est ecrit. s Si aucun modificateur l n'est present, l'argument const char * est interprete comme un pointeur sur un tableau de caracteres (une chaine) contenant une sequence de caracteres multioctets commencant a l'etat initial de decalage . Les caracteres du tableau sont convertis en caracteres larges (un par un par l'appel de la fonction mbrtowc(3) avec un etat de conversion reinitialise avant le premier octet). La chaine de caracteres larges en resultant est ecrite jusqu'au caractere NULL final (L'\0') non compris. Si la precision est donnee, le nombre de caracteres larges ecrits ne la depassera pas. Notez bien que la precision determine le nombre de caracteres larges ecrits et non le nombre d'octets ou de positions d'ecran. Le tableau doit contenir un octet NULL final ('\0'), a moins que la precision donnee soit si petite que le nombre de caracteres larges convertis est atteint avant la fin du tableau. Si un modificateur l est present, l'argument const wchar_t * est interprete comme un pointeur sur un tableau de caracteres larges. Les caracteres larges du tableau sont ecrits jusqu'au caractere NULL final non compris. Si la precision est indiquee, le nombre de caracteres ecrits ne la depassera pas. Le tableau doit contenir un caractere NULL final a moins que la precision donnee soit inferieure ou egale au nombre de caracteres larges du tableau. VALEUR RENVOYEE Ces fonctions renvoient le nombre de caracteres larges ecrits, non compris le caractere NULL final dans le cas des fonctions swprintf() et vswprintf(). Elles renvoient -1 en cas d'erreur. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +--------------------------+--------------------------+----------------+ |Interface | Attribut | Valeur | +--------------------------+--------------------------+----------------+ |wprintf(), fwprintf(), | Securite des threads | MT-Safe locale | |swprintf(), vwprintf(), | | | |vfwprintf(), vswprintf() | | | +--------------------------+--------------------------+----------------+ STANDARDS C11, POSIX.1-2008. HISTORIQUE POSIX.1-2001, C99. NOTES Le comportement de wprintf() et autres depend de la categorie LC_CTYPE de la regionalisation utilisee. Si la chaine format contient des caracteres larges non ASCII, le programme ne fonctionnera correctement que si la categorie LC_CTYPE de la regionalisation de l'execution est la meme que lors de la compilation. En effet, la representation de wchar_t depend de l'architecture et de la regionalisation. La glibc represente les caracteres larges a l'aide de leurs codes Unicode (ISO/IEC 10646), mais les autres architectures ne font pas de meme. De plus, l'utilisation des noms de caracteres universels de C99 (de la forme \unnnn) ne resout pas ce probleme. Aussi, la chaine format ne devrait etre constituee que de caracteres larges ASCII dans les programmes internationalises, ou alors elle doit etre construite a l'execution de maniere internationalisee (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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Frederic Hantrais et Gregoire Scano Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.8 2 mai 2024 wprintf(3)