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.