Convierte una secuencia multibyte en un carácter ancho. El carácter multibyte señalado por pmb se convierte en un valor de tipo wchar_t y se almacena en la ubicación señalada por pwc. La función devuelve la longitud en bytes del carácter multibyte.
mbtowc tiene su propio estado de cambio interno, que se modifica según sea necesario solo mediante llamadas a esta función. Una llamada a la función con un puntero nulo como pmb restablece el estado (y devuelve si los caracteres multibyte dependen del estado).
El comportamiento de esta función depende de la categoría LC_CTYPE de la configuración regional de C seleccionada (biblioteca de localización de C).
Sintaxis :
pwc: Pointer to an object of type wchar_t. Alternatively, this argument can be a null pointer, in which case the function does not store the wchar_t translation, but still returns the length in bytes of the multibyte character. pmb: Pointer to the first byte of a multibyte character. Alternatively, this argument can be a null pointer, in which case the function resets its internal shift state to the initial value and returns whether multibyte characters have a state-dependent encoding. max: Maximum number of bytes of pmb to consider for the multibyte character. Return Value: If the argument passed as pmb is not a null pointer, the size in bytes of the multibyte character pointed by pmb is returned when it forms a valid multibyte character and is not the terminating null character. If it is the terminating null character, the function returns zero, and in the case they do not form a valid multibyte character, -1 is returned. If the argument passed as pmb is a null pointer, the function returns a nonzero value if multibyte character encodings are state-dependent, and zero otherwise.
// C program to illustrate mbtowc // function #include <stdio.h> #include <stdlib.h> // function containing mbtowc & wchar_t(C) function void mbtowc_func(const char* pt, size_t max) { int length; // this is a typedef of an integral type wchar_t dest; // reset mbtowc mbtowc(NULL, NULL, 0); while (max > 0) { length = mbtowc(&dest, pt, max); if (length < 1) { break; } // printing each character in square braces printf("[%lc]", dest); pt += length; max -= length; } } int main() { const char str[] = "geeks portal"; mbtowc_func(str, sizeof(str)); return 0; }
Producción:
[g][e][e][k][s][ ][p][o][r][t][a][l]
Publicación traducida automáticamente
Artículo escrito por agrawalmohak99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA