L'utilisation habituelle de cette fonction est avec
s
et
pwc
tous deux différents
NULL.
Dans ce cas, la fonction
mbtowc()
examine au plus
n
octets de la chaîne multi-octets commençant à l'adresse
s,
extrait le premier caractère multi-octets complet,
le convertit en caractère large et le stocke dans
*pwc.
Elle met à jour l'état interne de décalage, connu d'elle seule.
Si
s
ne pointe pas sur un octet nul,
elle renvoie le nombre d'octets qui ont été consommés dans
s,
sinon, elle renvoie zéro.
Si les
n
octets débutant en
s
ne contiennent pas un caractère multi-octets complet,
ou s'il s'agit d'une séquence invalide,
mbtowc()
renvoie -1. Ceci peut se produire même si
n
est supérieur ou égal à
MB_CUR_MAX,
si la chaîne multi-octets contient des séquences de décalage redondantes.
Un autre cas possible se présent si
s
est non
NULL,
mais
pwc
est
NULLL.
Dans ce cas, la fonction
mbtowc()
se comporte comme ci-dessus,
mais ne stocke par le caractère large en mémoire.
Un troisième cas est possible si
s
est
NULL.
Alors,
pwc
et
n
sont ignorés.
La fonction
mbtowc()
réinitialise l'état de décalage, qu'elle seule connait,
et renvoie une valeur non nulle si l'encodage à un état de décalage
non trivial, ou zéro si l'encodage est sans état.