NOMBRE¶
wcrtomb - convierte una carácter ancho a un secuencia multibyte
SINOPSIS¶
#include <wchar.h>
size_t wcrtomb (char *s, wchar_t wc, mbstate_t *ps);
DESCRIPCIÓN¶
El caso principal de esta función es cuando
s no es NULL y
wc
no es L'\0'. En este caso, la función
wcrtomb convierte el
carácter ancho
wc a su representación multibyte y lo guarda
al principio de la cadena de caracteres apuntada por
s. Actualiza el
estado de cambios
*ps, y devuelve la longitud de la susodicha
representación multibyte, o sea, el número de bytes escritos en
s.
Un caso diferente es cuando
s no es NULL pero
wc es L'\0'. En ese
caso, la función
wcrtomb guarda en la cadena de caracteres
apuntada por
s la secuencia de cambios necesaria para devolver
*ps a su estado inicial, seguido por un byte '\0'. Actualiza el estado
de cambios
*ps (es decir, lo devuelve al estado inicial) y devuelve la
longitud de la secuencia de cambios más uno, es decir, el número de
bytes escritos en
s.
Un tercer caso es cuando
s es NULL. En este caso
wc se ignora, y
la función devuelve efectivamente wcrtomb(buf,L'\0',
ps) donde buf
es un buffer anónimo interno.
En todos los casos anteriores, si
ps es un puntero NULL, se usa en su
lugar un estado estático anónimo sólo conocido por la
función wcrtomb.
VALOR DEVUELTO¶
La función
wcrtomb devuelve el número de bytes que han sido o
serían escritos en el array de bytes
s. Si
wc no se puede
representar como un secuencia multibyte (de acuerdo a la localización
actual), devuelve (size_t)(-1) y
errno se pone con el valor
EILSEQ.
ISO/ANSI C, UNIX98
VÉASE TAMBIÉN¶
wcsrtombs(3)
OBSERVACIONES¶
El comportamiento de
wcrtomb depende de la categoría LC_CTYPE de la
localización actual.
Pasar NULL como
ps no es seguro en entornos multihilo.