Compartilhar via


_mbclen, mblen, _mblen_l, _mbclen_l

Obtém o comprimento e determina a validade de um caractere multibyte.

Importante

Esta API não pode ser usada em aplicativos executados no Windows Runtime. Para obter mais informações, confira Funções do CRT sem suporte em aplicativos da Plataforma Universal do Windows.

Sintaxe

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
Caractere multibyte.

mbstr
Endereço de uma sequência de bytes de caracteres multibyte.

count
O número de bytes a serem verificados.

locale
Localidade a usar.

Valor retornado

_mbclen e _mbclen_l retornar 1 ou 2, de acordo com o comprimento do caractere cmultibyte . As funções sempre retornam 1 para UTF-8, seja c multibyte ou não. Não há retorno de erro para _mbclen.

Se mbstr não NULLfor e mblen _mblen_l retornar o comprimento, em bytes, do caractere multibyte. As mblen funções and _mblen_l funcionam corretamente em UTF-8 e podem retornar um valor entre 1 e 3. Quando mbstr é NULL (ou aponta para o caractere nulo de caractere largo) mblen e _mblen_l retorna 0. O objeto que mbstr aponta para deve formar um caractere multibyte válido dentro dos primeiros count caracteres ou mblen retornar _mblen_l -1.

Comentários

A função _mbclen retorna o tamanho, em bytes, do caractere multibyte c. Se c não aponta para o byte inicial de um caractere multibyte (conforme determinado por uma chamada implícita para _ismbblead, o resultado de _mbclen é imprevisível.

mblen Retorna o comprimento em bytes de mbstr se for um caractere multibyte válido. Ela também determinará a validade dos caracteres multibyte associada à página de código. mblen examina count ou menos bytes contidos em mbstr, mas não mais de MB_CUR_MAX bytes.

O valor de saída é afetado pela configuração de LC_CTYPE categoria da localidade. As versões dessas funções sem o sufixo _l usam a localidade atual para esse comportamento que depende da localidade. As _l versões com sufixo se comportam da mesma forma, mas usam o parâmetro locale passado. Para obter mais informações, consulte setlocale e Localidade.

_mbclen, _mblen_le _mbclen_l são específicos da Microsoft, não fazem parte da biblioteca C padrão. Não recomendamos que você as use se quiser um código portátil. Para compatibilidade com o padrão C, use mblen ou mbrlen em vez disso.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina Tchar.h _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tclen É mapeado para um macro ou uma função embutida _mbclen É mapeado para um macro ou uma função embutida

Requisitos

Rotina Cabeçalho necessário
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Classificação de personagens
Localidade
Interpretação de sequências de caracteres multibyte
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, , _mbstrlen_l