strcmp, wcscmp, _mbscmp
Compare cadeias de caracteres.
Importante |
---|
_mbscmp não pode ser usado em aplicativos executados em Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT não suportadas com /ZW. |
int strcmp( const char *string1, const char *string2 ); int wcscmp( const wchar_t *string1, const wchar_t *string2 ); int _mbscmp( const unsigned char *string1, const unsigned char *string2 );
Parâmetros
- string1, string2
Cadeias de caracteres NULL- terminadas para comparar.
Valor de retorno
O valor de retorno para cada uma dessas funções indica a relação lexicographic de string1 a string2.
Valor |
Relacionamento de string1 a string2 |
---|---|
< 0 |
string1 é menor que string2 |
0 |
string1 é idêntico a string2 |
> 0 |
string1 é maior do que string2 |
Em um erro, _mbscmp retorna _NLSCMPERROR, que é definido em STRING.H e em. MBSTRING.H.
Comentários
A função de strcmp compara string1 e string2 lexicographically e retorna um valor que indica a relação.wcscmp_mbscmp versões são e, respectivamente, de largo- caractere e o caractere multibyte- de strcmp._mbscmp reconhece sequências de multibyte- caractere de acordo com a página atual de código de multibyte e retorna _NLSCMPERROR em um erro.Para obter mais informações, consulte Páginas de código.Além disso, se string1 ou string2 são um ponteiro zero, _mbscmp chama o manipulador de parâmetro inválido, como descrito em Validação de parâmetro.Se a execução é permitida continuar, _mbscmp retorna _NLSCMPERROR e defina errno a EINVAL.strcmp e wcscmp não validam seus parâmetros.Essas três funções se comportam de forma idêntica.
Mapeamentos da rotina de Genérico- texto
Rotina de TCHAR.H |
_UNICODE & _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Funções de strcmp diferem das funções de strcoll que as comparações de strcmp não são afetadas pela localidade, enquanto a forma de comparações de strcoll é determinada por categoria de LC_COLLATE de localidade atual.Para obter mais informações sobre a categoria de LC_COLLATE , consulte setlocale, wsetlocale.
Na localidade de “C”, a ordem de caracteres no conjunto de caracteres (conjuntos de caracteres ASCII) é o mesmo que a ordem lexicographic de caracteres.No entanto, outras localidades, a ordem de caracteres no conjunto de caracteres pode diferir de ordem lexicographic.Por exemplo, em determinadas localidades europeias, o caractere “a” (valor 0x61) antes do caractere “ä” (valor 0xE4) no conjunto de caracteres, mas o caractere “ä” preceda o caractere “a” lexicographically.
Em localidades para o conjunto de caracteres e ordem lexicographic de caracteres diferem, use strcoll em vez de strcmp para comparação lexicographic de cadeias de caracteres de acordo com a configuração da categoria de LC_COLLATE de localidade atual.Para realizar uma comparação lexicographic de localidade no exemplo anterior, use strcoll em vez de strcmp.Como alternativa, você pode usar strxfrm em cadeias de caracteres original, então usa strcmp em cadeias de caracteres resultantes.
_stricmp, _wcsicmp, e comparam cadeias de caracteres _mbsicmp primariamente para converter as para seus formulários em minúsculas.Duas cadeias de caracteres que contêm os caracteres localizados entre “Z” e “a” na tabela ASCII (“” [], '\'“,”, '^', '_', e) '`'comparam diferente, dependendo dos casos.Por exemplo, as duas cadeias de caracteres "ABCDE" e "ABCD^" comparam uma maneira se a comparação é minúsculo ("abcde" > "abcd^") e outra forma ("ABCDE" < "ABCD^") se a comparação é maiúscula.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> ou <wchar.h> |
_mbscmp |
<mbstring.h> |
Para informações extras de compatibilidade, consulte Compatibilidade.
Bibliotecas
Todas as versões de Bibliotecas em tempo de execução de C.
Exemplo
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
int main( void )
{
char tmp[20];
int result;
// Case sensitive
printf( "Compare strings:\n %s\n %s\n\n", string1, string2 );
result = strcmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " strcmp: String 1 is %s string 2\n", tmp );
// Case insensitive (could use equivalent _stricmp)
result = _stricmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof (tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " _stricmp: String 1 is %s string 2\n", tmp );
}
Equivalência do .NET Framework
System::String::CompareOrdinal
Consulte também
Referência
Manipulação de cadeia de caracteres (CRT)
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l