mbrlen(3) Calculer la longueur d'un caractère multioctets

SYNOPSIS

#include <wchar.h>


size_t mbrlen(const char *s, size_t n, mbstate_t *ps);

DESCRIPTION

La fonction mbrlen() examine au maximum n octets de la séquence commençant en s et en extrait le caractère multioctet complet suivant. Elle met à jour l'état de décalage *ps. Si le caractère multioctet ne correspond pas au caractère large nul, elle renvoie le nombre d'octets qui ont été lus dans s. Si ce caractère correspond au caractère large nul, elle réinitialise l'état *ps et renvoie 0.

Si les n octets commençant en s ne contiennent pas un caractère multioctet complet, mbrlen() renvoie (size_t) -2. Ceci peut se produire même si n >= MB_CUR_MAX, dans le cas où 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, mbrlen() renvoie (size_t) -1 et place dans errno la valeur EILSEQ. Dans ce cas, les effets sur *ps sont indéfinis.

Si ps est un pointeur NULL, une zone de mémoire statique réservée à mbrlen() est utilisée à sa place.

VALEUR RENVOYÉE

La fonction mbrlen() 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é.

ATTRIBUTS

Multithreading (voir pthreads(7))

La fonction mbrlen() 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.

CONFORMITÉ

C99.

NOTES

Le comportement de mbrlen() dépend de la catégorie LC_CTYPE de la localisation en cours.

COLOPHON

Cette page fait partie de la publication 3.65 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/.

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 à <[email protected]> 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> ».