wcstombs(3) convierte una cadena de caracteres anchos a una cadena mulibyte

SYNOPSIS

#include <stdlib.h>


size_t wcstombs (char *dest, const wchar_t *src, size_t n);

DESCRIPCIÓN

Si dest no es un puntero NULL, la función wcstombs convierte la cadena de caracteres anchos *src en una cadena multibyte comenzando en dest. En dest se escriben, como mucho, n bytes. El estado de cambios *ps se acualiza. La conversión comienza en el estado inicial. La conversión puede pararse por tres razones:

1. Se ha encontrado un carácter ancho que no se puede representar como una secuencia multibyte (de acuerdo con la localización actual). En este caso se devuelve (size_t)(-1).

2. El límite de longitud fuerza la parada. En este caso, devuelve el número de bytes escritos en dest pero el estado de cambios en este punto se pierde.

3. Se ha completado la conversión de la cadena de caracteres anchos, incluyendo la terminación L'\0'. En este caso, la conversión termina en el estado inicial. Devuelve el número de bytes escritos en dest, excluyendo el byte terminador '\0'.

El programador tiene que asegurarse de que hay espacio para al menos n bytes en dest.

Si dest es NULL, len se ignora, y la conversión procede como arriba, salvo que los bytes convertidos no se escriben en memoria y no existe límite de longitud.

Para evitar los dos casos anteriores, el programador debería estar seguro de que n es mayor o igual a wcstombs(NULL,src,0)+1.

VALOR DEVUELTO

la función wcstombs devuelve el número de bytes que conforman la parte de la secuencia multibyte convertida, sin incluir el byte nulo terminador. Si encontró un carácter ancho que no pudo convertir, devuelve (size_t)(-1).

CONFORME A

ISO/ANSI C, UNIX98

OBSERVACIONES

El comportamiento de wcstombs depende de la categoría LC_CTYPE de la localización actual.

La función wcsrtombs proporciona un interfaz seguro para hilos con la misma funcionalidad.