mbrtowc - Convertir une séquence multioctet en caractère large
Bibliothèque C standard (
libc,
-lc)
#include <wchar.h>
size_t mbrtowc(wchar_t *restrict pwc, const char s[restrict .n],
size_t n, mbstate_t *restrict ps);
L'utilisation principale de cette fonction est avec
s et
pwc non
NULL. Dans ce cas, la fonction
mbrtowc() examine au plus
n
octets de la chaîne multioctet commençant en
s, en
extrait le prochain caractère multioctet complet, et le place en
*pwc. Elle met à jour l'état de décalage
*ps. Si le caractère large obtenu n'est pas L'\0' (le
caractère large nul), elle renvoie le nombre d'octets consommés
depuis
s. Si le caractère large obtenu est L'\0', elle
réinitialise l'état de décalage
*ps et renvoie
zéro.
Si les
n octets commençant en
s ne contiennent pas de
caractère large complet,
mbrtowc() renvoie
(size_t) -2. Cela peut se produire même si
n >=
MB_CUR_MAX, lorsque la séquence multioctet contient des
séquences de décalage redondantes.
Si la séquence multioctet commençant en
s contient une
séquence invalide avant le prochain caractère complet,
mbrtowc() renvoie
(size_t) -1 et place dans
errno
la valeur
EILSEQ. Dans ce cas, les effets sur
*ps sont
indéfinis.
Une autre situation est possible, si
s est non NULL, mais
pwc est
NULL. Dans ce cas,
mbrtowc() se comporte comme
précédemment, mais n'enregistre pas le caractère large
obtenu.
Un troisième cas se présente si
s est NULL. Alors,
pwc et
n sont ignorés. Si l'état de conversion
représenté par
*ps indique une conversion multioctet
incomplète, la fonction
mbrtowc() renvoie
(size_t) -1, remplie
errno avec
EILSEQ, et laisse
*ps dans un état indéfini. Sinon, la fonction
mbrtowc() replace
*ps dans l'état initial et renvoie 0.
Dans tous ces cas, si
ps est un pointeur NULL, une zone de mémoire
statique propre à
mbrtowc() est utilisée à sa
place. Sinon,
*ps doit être un objet
mbstate_t valide. Un
tel objet
mbstate_t noté
a peut être
initialisé en le mettant à zéro, par exemple
ainsi :
memset(&a, 0, sizeof(a));
La fonction
mbrtowc() renvoie le nombre d'octets balayés depuis la
séquence multioctet commençant en
s, si un
caractère large non nul a été reconnu. Elle renvoie
zéro si un caractère large nul est rencontré. Elle
renvoie
(size_t) -1 et définit
errno à
EILSEQ, si une séquence multioctet non valable est
trouvée. Elle renvoie
(size_t) -2 si elle n'a pas
trouvé de caractère multioctet entier, signifiant que
n
doit être augmenté.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
mbrtowc() |
Sécurité des threads |
MT-Unsafe race:mbrtowc/!ps |
POSIX.1-2001, POSIX.1-2008, C99.
Le comportement de
mbrtowc() dépend de la catégorie
LC_CTYPE de la localisation en cours.
mbsinit(3),
mbsrtowcs(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Jean-Baptiste Holcroft <
[email protected]> et Grégoire
Scano <
[email protected]>
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 à
[email protected]