L'utilisation principale de cette fonction est le cas où
s
est non NULL,
et
wc
n'est pas L'\0'.
Alors, la fonction
wcrtomb()
convertit le caractère large
wc
dans sa représentation multi-octets,
et l'enregistre au début de la chaîne pointée par
s.
Elle met à jour l'état de conversion
*ps,
et renvoie la longueur de la représentation multi-octets,
c'est-à-dire le nombre d'octets écrits en
s.
Une autre possibilité peut se présenter quand
s
est non NULL, mais
wc
vaut L'\0'.
Dans cette situation, la fonction
wcrtomb()
enregistre dans la chaîne de caractères pointée par
s
la séquence de décalages nécessaire pour ramener
*ps
à son état initial, suivie d'un caractère '\0'.
Elle met à jour l'état
*ps
(le ramène donc à l'état initial),
et renvoie la longueur de la séquence en ajoutant
un pour compter l'octet nul final.
Un troisième cas se présente quand
s
est NULL.
Alors,
wc
est ignoré, et la fonction renvoie alors le résultat
de wcrtomb(buf,L'\0',ps) où buf est un tampon interne.
Dans tous les cas, si
ps
est un pointeur NULL, un état statique interne est utilisé.