Share via


_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l

Retorna o número de caracteres ou bytes dentro de uma contagem especificada.

Importante

_mbsnbcnt, _mbsnbcnt_l, _mbsnccnt e _mbsnccnt_l não podem ser usados em aplicativos que são 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 _strncnt(
   const char *str,
   size_t count
);
size_t _wcsncnt(
   const wchar_t *str,
   size_t count
);
size_t _mbsnbcnt(
   const unsigned char *str,
   size_t count
);
size_t _mbsnbcnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);
size_t _mbsnccnt(
   const unsigned char *str,
   size_t count
);
size_t _mbsnccnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);

Parâmetros

str
Cadeia de caracteres a ser examinada.

count
Número de caracteres ou bytes a ser examinado em str.

locale
Localidade a usar.

Retornar valor

_mbsnbcnt e _mbsnbcnt_l retornam o número de bytes encontrado no primeiro de count caracteres multibyte de str. _mbsnccnt e _mbsnccnt_l retornam o número de bytes encontrado no primeiro count de bytes de str. Se um caractere nulo for encontrado antes da conclusão do str exame, eles retornarão o número de bytes ou caracteres encontrados antes do caractere nulo. Se str consiste em menos de count caracteres ou bytes, retornam o número de caracteres ou bytes na cadeia de caracteres. Se count for menor que zero, eles retornam 0. Nas versões anteriores, essas funções tinham um valor retornado do tipo int ao invés de size_t.

_strncnt retorna o número de caracteres nos primeiros count bytes da cadeia de caracteres de byte único str. _wcsncnt retorna o número de caracteres nos primeiros count caracteres largos da cadeia de caracteres largos str.

Comentários

_mbsnbcnt e _mbsnbcnt_l contam o número de bytes encontrados no primeiro count de caracteres multibyte de str. _mbsnbcnt e _mbsnbcnt_l substituem mtob e devem ser usados no lugar de mtob.

_mbsnccnt e _mbsnccnt_l contam o número de caracteres encontrado no primeiro count de bytes de str. Se _mbsnccnt e encontrar um caractere nulo no segundo byte de um caractere de byte duplo, o primeiro byte também será considerado nulo e _mbsnccnt_l não será incluído no valor de contagem retornado. _mbsnccnt e _mbsnccnt_l substituem btom e devem ser usados no lugar de btom.

Se str for um NULL ponteiro ou for count 0, essas funções invocarão o manipulador de parâmetros inválido, conforme descrito em Validação de parâmetro, errno será definido como EINVALe a função retornará 0.

O valor de saída é afetado pela configuração da categoria LC_CTYPE da localidade. Para obter mais informações, consulte setlocale. As versões dessas funções sem o sufixo _l usam a localidade atual desse comportamento dependente da localidade. As versões com o sufixo _l são idênticas, exceto por usarem o parâmetro de localidade passado em seu lugar. Para obter mais informações, consulte Localidade.

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

Mapeamentos de rotina de texto genérico

Rotina _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tcsnbcnt _strncnt _mbsnbcnt _wcsncnt
_tcsnccnt _strncnt _mbsnbcnt N/D
_wcsncnt N/D N/D _mbsnbcnt
_wcsncnt N/D N/D _mbsnccnt
N/D N/D _mbsnbcnt_l _mbsnccnt_l

Requisitos

Rotina Cabeçalho necessário
_mbsnbcnt <mbstring.h>
_mbsnbcnt_l <mbstring.h>
_mbsnccnt <mbstring.h>
_mbsnccnt_l <mbstring.h>
_strncnt <tchar.h>
_wcsncnt <tchar.h>

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

Exemplo

// crt_mbsnbcnt.c

#include  <mbstring.h>
#include  <stdio.h>

int main( void )
{
   unsigned char str[] = "This is a multibyte-character string.";
   unsigned int char_count, byte_count;
   char_count = _mbsnccnt( str, 10 );
   byte_count = _mbsnbcnt( str, 10 );
   if ( byte_count - char_count )
      printf( "The first 10 characters contain %d multibyte characters\n", char_count );
   else
      printf( "The first 10 characters are single-byte.\n");
}

Saída

The first 10 characters are single-byte.

Confira também

Manipulação de cadeia de caracteres
Localidade
Interpretação de sequências de caracteres multibyte
_mbsnbcat, _mbsnbcat_l