mbtowc, _mbtowc_l
Convierte un carácter multibyte a un carácter ancho correspondiente.
int mbtowc(
wchar_t *wchar,
const char *mbchar,
size_t count
);
int _mbtowc_l(
wchar_t *wchar,
const char *mbchar,
size_t count,
_locale_t locale
);
Parámetros
wchar
Dirección de un carácter ancho (tipo wchar_t).mbchar
Dirección de una secuencia de bytes (un carácter multibyte).count
Número de bytes que se va a comprobar.configuración regional
Configuración regional que se va a usar.
Valor devuelto
Si mbchar no es nulo y si el objeto que mbchar señala a los formularios un carácter válido multibyte, mbtowc devuelve la longitud en bytes de caracteres multibyte. Si mbchar es nulo o el objeto al que señala es un carácter null de caracteres anchos (L'\0), la función devuelve 0. Si el objeto que mbchar elija no forma un carácter válido multibyte dentro de los primeros caracteres de recuento , devuelve – 1.
Comentarios
La función de mbtowc convierte el recuento o menos bytes indicada por mbchar, si mbchar no es nulo, un carácter ancho correspondiente. mbtowc almacena el carácter ancho resultante en wchar, si es wchar no es nulo. mbtowc no examina más que los bytes de MB_CUR_MAX . mbtowc utiliza la configuración regional actual para el comportamiento configuración regional-dependiente; _mbtowc_l es idéntico pero utiliza la configuración regional pasado en su lugar. Para obtener más información, vea Configuración regional.
Requisitos
Rutina |
Encabezado necesario |
---|---|
mbtowc |
<stdlib.h> |
_mbtowc_l |
<stdlib.h> |
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Bibliotecas
Todas las versiones de las bibliotecas en tiempo de ejecución de C.
Ejemplo
// crt_mbtowc.c
/* Illustrates the behavior of the mbtowc function
*/
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
int i;
char *pmbc = (char *)malloc( sizeof( char ) );
wchar_t wc = L'a';
wchar_t *pwcnull = NULL;
wchar_t *pwc = (wchar_t *)malloc( sizeof( wchar_t ) );
printf( "Convert a wide character to multibyte character:\n" );
wctomb_s( &i, pmbc, sizeof(char), wc );
printf( " Characters converted: %u\n", i );
printf( " Multibyte character: %x\n\n", *pmbc );
printf( "Convert multibyte character back to a wide "
"character:\n" );
i = mbtowc( pwc, pmbc, MB_CUR_MAX );
printf( " Bytes converted: %u\n", i );
printf( " Wide character: %x\n\n", *pwc );
printf( "Attempt to convert when target is NULL\n" );
printf( " returns the length of the multibyte character:\n" );
i = mbtowc( pwcnull, pmbc, MB_CUR_MAX );
printf( " Length of multibyte character: %u\n\n", i );
printf( "Attempt to convert a NULL pointer to a" );
printf( " wide character:\n" );
pmbc = NULL;
i = mbtowc( pwc, pmbc, MB_CUR_MAX );
printf( " Bytes converted: %u\n", i );
}
Resultados
Convert a wide character to multibyte character:
Characters converted: 1
Multibyte character: 61
Convert multibyte character back to a wide character:
Bytes converted: 1
Wide character: 61
Attempt to convert when target is NULL
returns the length of the multibyte character:
Length of multibyte character: 1
Attempt to convert a NULL pointer to a wide character:
Bytes converted: 0
Equivalente en .NET Framework
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.