strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
Compara até a contagem de caracteres de duas cadeias de caracteres especificada.
Importante
_mbsncmpe _mbsncmp_l não pode ser usado em aplicativos executados no tempo de execução do Windows.Para obter mais informações, consulte Funções de CRT sem suporte com /ZW.
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 ser comparado.count
Número de caracteres a ser comparado.locale
Localidade a usar.
Valor de retorno
O valor de retorno indica a relação de subcadeias de caracteres de string1 e string2 da seguinte maneira.
Valor de retorno |
Descrição |
---|---|
< 0 |
string1subcadeia de caracteres menor que string2 subcadeia de caracteres |
0 |
string1subcadeia de caracteres idêntica à string2 subcadeia de caracteres |
> 0 |
string1subcadeia de caracteres maior que string2 subcadeia de caracteres |
Em um erro de validação de parâmetro, _mbsncmp e _mbsncmp_l retornar _NLSCMPERROR, que é definido em < String. h > e < mbstring.h >.
Comentários
O strncmp função executa uma comparação ordinal do primeiro no máximo count caracteres string1 e string2 e retorna um valor que indica a relação entre as subcadeias de caracteres. strncmpé uma versão de maiúsculas e minúsculas do _strnicmp. wcsncmpe _mbsncmp são versões de maiúsculas e minúsculas de _wcsnicmp e _mbsnicmp.
wcsncmpe _mbsncmp são versões de caractere largo e caracteres multibyte strncmp. Os argumentos de wcsncmp são cadeias de caracteres largos; aqueles de _mbsncmp são cadeias de caracteres multibyte. _mbsncmpreconhece sequências de caracteres multibyte de acordo com uma página de código multibyte e retorna _NLSCMPERROR em caso de erro.
Além disso, _mbsncmp e _mbsncmp_l validar parâmetros. Se string1 ou string2 é um ponteiro nulo, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação do parâmetro. Se a execução puder continuar, _mbsncmp e _mbsncmp_l retornar _NLSCMPERROR e defina errno para EINVAL. strncmpe wcsncmp não validam seus parâmetros. Essas funções se comportam de forma idêntica caso contrário.
O comportamento de comparação de _mbsncmp e _mbsncmp_l é afetado pela configuração do 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. O _mbsncmp função usa a localidade atual desse comportamento dependente de localidade. O _mbsncmp_l função é idêntica, exceto que ele usa o locale parâmetro em vez disso. Para obter mais informações, consulte Localidade. Se a localidade é um byte único, o comportamento dessas funções é idêntico ao strncmp.
Mapeamentos da 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 |
Mapas de macro ou uma função in-line |
_mbsncmp |
Mapas de macro ou uma função in-line |
não aplicável |
não aplicável |
_mbsncmp_l |
não aplicável |
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strncmp |
<string.h> |
wcsncmp |
<string.h> ou <wchar.h> |
_mbsncmp, _mbsncmp_l |
<mbstring.h> |
Para obter informações adicionais 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 );
}
Equivalência do .NET Framework
Consulte também
Referência
Manipulação da cadeia de caracteres (CRT)
Interpretação de sequências de caracteres multibyte
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l