strncmp
, wcsncmp
, _mbsncmp
, _mbsncmp_l
Compara até a contagem especificada de caracteres de duas cadeias de caracteres.
Importante
_mbsncmp
e _mbsncmp_l
não podem ser usados 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
int strncmp(
const char *string1,
const char *string2,
size_t count
);
int wcsncmp(
const wchar_t *string1,
const wchar_t *string2,
size_t count
);
int _mbsncmp(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
int _mbsncmp_l(
const unsigned char *string1,
const unsigned char *string2,
size_t count,
_locale_t locale
);int _mbsnbcmp(
const unsigned char *string1,
const unsigned char *string2,
size_t count
);
Parâmetros
string1
, string2
Cadeias de caracteres a serem comparadas.
count
O número de caracteres a serem comparados.
locale
Localidade a usar.
Valor retornado
O valor retornado indica a relação das subcadeias de caracteres de string1
para string2
da seguinte maneira.
Valor retornado | Descrição |
---|---|
< 0 | string1 subcadeia de caracteres menor que string2 subcadeia de caracteres |
0 | string1 subcadeia de caracteres idêntica à string2 subcadeia de caracteres |
> 0 | string1 subcadeia de caracteres maior que string2 subcadeia de caracteres |
Em um erro de validação de parâmetro, _mbsncmp
e _mbsncmp_l
retornam _NLSCMPERROR
, que é definido em <string.h>
e <mbstring.h>
.
Comentários
A função strncmp
executa uma comparação ordinal de, no máximo, os primeiros count
caracteres em string1
e string2
e retorna um valor que indica a relação entre as subcadeias de caracteres. strncmp
é uma versão que diferencia maiúsculas e minúsculas de _strnicmp
. wcsncmp
e _mbsncmp
são versões que diferenciam maiúsculas e minúsculas de _wcsnicmp
e _mbsnicmp
.
wcsncmp
e _mbsncmp
são versões de caracteres largos e de caracteres multibyte de strncmp
. Os argumentos de wcsncmp
são cadeias de caracteres largos. Os argumentos de _mbsncmp
são cadeias de caracteres multibyte. _mbsncmp
reconhece sequências de caracteres multibyte de acordo com a página de código multibyte e retorna _NLSCMPERROR
em um erro.
Além disso, _mbsncmp
e _mbsncmp_l
validam os parâmetros. Se string1
or string2
for um ponteiro nulo e count
não for igual a 0, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, _mbsncmp
e _mbsncmp_l
retornarão _NLSCMPERROR
e definirão errno
como EINVAL
. strncmp
e wcsncmp
não validam seus parâmetros. Caso contrário, essas funções se comportam de forma idêntica.
O comportamento de comparação de _mbsncmp
e _mbsncmp_l
é afetado pela configuração da LC_CTYPE
configuração de categoria da localidade. Isso controla a detecção de bytes à esquerda e à direita de caracteres multibyte. Para obter mais informações, consulte setlocale
. A função _mbsncmp
usa a localidade atual para esse comportamento que depende da localidade. A função _mbsncmp_l
é idêntica, exceto que usa o parâmetro locale
, em vez disso. Para obter mais informações, consulte Localidade. Se a localidade for um byte único, o comportamento dessas funções será idêntico ao strncmp
.
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 |
---|---|---|---|
_tcsnccmp |
strncmp |
_mbsncmp |
wcsncmp |
_tcsncmp |
strncmp |
_mbsnbcmp |
wcsncmp |
_tccmp |
É mapeado para um macro ou uma função embutida | _mbsncmp |
É mapeado para um macro ou uma função embutida |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
strncmp |
<string.h> |
wcsncmp |
<string.h> ou <wchar.h> |
_mbsncmp , _mbsncmp_l |
<mbstring.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_strncmp.c
#include <string.h>
#include <stdio.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
int main( void )
{
char tmp[20];
int result;
printf( "Compare strings:\n %s\n %s\n\n",
string1, string2 );
printf( "Function: strncmp (first 10 characters only)\n" );
result = strncmp( string1, string2 , 10 );
if( result > 0 )
strcpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, sizeof(tmp), "less than" );
else
strcpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n\n", tmp );
printf( "Function: strnicmp _strnicmp (first 10 characters only)\n" );
result = _strnicmp( string1, string2, 10 );
if( result > 0 )
strcpy_s( tmp, sizeof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, sizeof(tmp), "less than" );
else
strcpy_s( tmp, sizeof(tmp), "equal to" );
printf( "Result: String 1 is %s string 2\n", tmp );
}
Compare strings:
The quick brown dog jumps over the lazy fox
The QUICK brown fox jumps over the lazy dog
Function: strncmp (first 10 characters only)
Result: String 1 is greater than string 2
Function: strnicmp _strnicmp (first 10 characters only)
Result: String 1 is equal to string 2
Confira também
Manipulação de cadeia de caracteres
Localidade
Interpretação de sequências de caracteres multibyte
_mbsnbcmp
, _mbsnbcmp_l
_mbsnbicmp
, _mbsnbicmp_l
strcmp
, wcscmp
, _mbscmp
Funções strcoll
_strnicmp
, _wcsnicmp
, _mbsnicmp
, _strnicmp_l
, _wcsnicmp_l
, , _mbsnicmp_l
strrchr
, wcsrchr
, _mbsrchr
, _mbsrchr_l
_strset
, _strset_l
, _wcsset
, _wcsset_l
, _mbsset
, , _mbsset_l
strspn
, wcsspn
, _mbsspn
, _mbsspn_l