_mbclen, mblen, _mblen_l, _mbclen_l

Obtiene la longitud y determina la validez de un carácter multibyte.

Importante

Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.

Sintaxis

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
int mblen(
   const char *mbstr,
   size_t count
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

Parámetros

c
Carácter multibyte.

mbstr
Dirección de una secuencia de bytes de caracteres multibyte.

count
Número de bytes que se va a comprobar.

locale
Configuración regional que se va a usar.

Valor devuelto

_mbclen y _mbclen_l devuelven 1 o 2, según la longitud del carácter cmultibyte . Las funciones siempre devuelven 1 para UTF-8, ya sea c multibyte o no. No se devuelve ningún error para _mbclen.

Si mbstr no NULLes y mblen_mblen_l devuelve la longitud, en bytes, del carácter multibyte. Las mblen funciones y _mblen_l funcionan correctamente en UTF-8 y pueden devolver un valor entre 1 y 3. Cuando mbstr es NULL (o apunta al carácter NULL de caracteres anchos) mblen y _mblen_l devuelve 0. El objeto que mbstr apunta a debe formar un carácter multibyte válido dentro de los primeros count caracteres o mblen devolver _mblen_l -1.

Comentarios

La función _mbclen devuelve la longitud, en bytes, del carácter multibyte c. Si c no apunta al byte principal de un carácter multibyte (determinado por una llamada implícita a _ismbblead, el resultado de _mbclen es impredecible.

mblen devuelve la longitud en bytes de mbstr si es un carácter multibyte válido. También determina la validez del carácter multibyte asociada a la página de códigos. mblen examina count bytes o menos de mbstr, pero no más MB_CUR_MAX bytes.

El valor de salida se ve afectado por el LC_CTYPE valor de categoría de la configuración regional. Las versiones de estas funciones sin el sufijo _l utilizan la configuración regional actual en el comportamiento que depende de esta configuración regional. Las _l versiones sufijos se comportan igual, pero usan el parámetro de configuración regional pasado en su lugar. Para obtener más información, consulte setlocale y Configuración regional.

_mbclen, _mblen_ly _mbclen_l son específicos de Microsoft, no forman parte de la biblioteca estándar de C. No se recomienda usarlos donde quiera que haya código portátil. Para la compatibilidad con C estándar, use mblen o mbrlen en su lugar.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tclen Se asigna a una macro o una función insertada _mbclen Se asigna a una macro o una función insertada

Requisitos

Routine Encabezado necesario
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_mblen.c
/* illustrates the behavior of the mblen function
*/

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert 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 );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

Consulte también

Clasificación de caracteres
Configuración regional
Interpretación de secuencias de caracteres multibyte
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l