NOMBRE
mbsinit − comprueba el estado inicial de cambios
SINOPSIS
#include <wchar.h>
int mbsinit (const mbstate_t *ps);
DESCRIPCIÓN
La conversión de caracteres entre la representación multibyte y la representación de caracteres anchos usa un estado de conversión, del tipo mbstate_t. La conversión de una cadena usa una máquina de estados finitos. Cuando se interrumpe después de terminar la conversión de un determinado número de caracteres, puede necesitar salvar un estado para procesar los restantes caracteres. Tal estado de conversión es necesario por el bien de codificaciones tales como la ISO-2022 y la UTF-7.
El estado inicial es el estado al principio de la conversión de la cadena. Existen dos clases de estado: el que usan las funciones de conversión de multibyte a carácter ancho, tal como mbsrtowcs, y el que usan las funciones de conversión de carácter ancho a multibyte, tal como wcsrtombs, aunque ambos encajan en un mbstate_t, y ambos poseen la misma representación para un estado inicial.
Para codificaciones de 8 bits, todos los estados son equivalentes al estado inicial. Para codificaciones multibyte como UTF-8, EUC-*, BIG5 o SJIS, las funciones de conversión de carácter ancho a multibyte nunca producen estados no-iniciales, pero las funciones de conversión de multibyte a carácter ancho como mbrtowc sí producen estados no-iniciales cuando son interrumpidas a mitad de un carácter.
Una forma
posible de crear un mbstate_t en un estado inicial es
asignarle un cero:
mbstate_t state;
memset(&state,0,sizeof(mbstate_t));
En Linux, lo siguiente también funciona, aunque
podría producir advertencias del compilador:
mbstate_t state = { 0 };
La función mbsinit comprueba si *ps se corresponde con un estado inicial.
VALOR DEVUELTO
mbsinit devuelve un valor distinto de cero si *ps se encuentra en un estado inicial o si ps es un puntero nulo. En otro caso, devuelve 0.
CONFORME A
ISO/ANSI C, UNIX98
VÉASE TAMBIÉN
OBSERVACIONES
El comportamiento de mbsinit depende de la categoría LC_CTYPE de la localización actual.