WCRTOMB(3)

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.

CONFORME A
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.