1. NOM▲
mbrtowc - Convertir une séquence multi-octets en caractère large
2. SYNOPSIS ▲
#include <wchar.h>
size_t mbrtowc
(
wchar_t *
pwc, const
char
*
s, size_t n, mbstate_t *
ps);
3. DESCRIPTION ▲
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 multi-octets commençant en s, en extrait le prochain caractère multi-octets 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 multi-octets contient des séquences de décalage redondantes.
Si la séquence multi-octets 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 multi-octets 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));
4. VALEUR RENVOYÉE ▲
La fonction mbrtowc() renvoie le nombre d'octets balayés depuis la séquence 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 remplit errno avec EILSEQ, si une séquence invalide est trouvée. Elle renvoie (size_t) -2 si elle n'a pas trouvé de caractère entier, et si n doit être augmenté.
5. ATTRIBUTS ▲
5.1. Multithreading (voir pthreads(7)) ▲
La fonction mbrtowc() est sûre dans un contexte multithread avec exceptions. Elle n'est pas sûre dans un contexte multithread si appelées avec un paramètre ps NULL.
6. CONFORMITÉ ▲
C99.
7. NOTES ▲
Le comportement de mbrtowc() dépend de la catégorie LC_CTYPE de la localisation en cours.
8. VOIR AUSSI ▲
mbsrtowcs(3)
9. COLOPHON ▲
Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
10. TRADUCTION ▲
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».