strcmp, wcscmp, _mbscmp
Compare cadeias de caracteres.
Importante
_mbscmpnão pode ser usado em aplicativos que são executados a Tempo de Execução do Windows.Para obter mais informações, consulte Funções de CRT sem suporte 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
Caracteres de terminação nula para comparar.
Valor de retorno
O valor de retorno para cada uma dessas funções indica a relação ordinal string1 para string2.
Valor |
Relação da string1 a string2 |
---|---|
< 0 |
string1 é menor que string2 |
0 |
string1 é idêntica a string2 |
> 0 |
string1 é maior que string2 |
Em um erro de validação de parâmetro _mbscmp retorna _NLSCMPERROR, que é definido em < String. h > e < mbstring.h >.
Comentários
O strcmp função executa uma comparação ordinal de string1 e string2 e retorna um valor que indica sua relação. wcscmpe _mbscmp são, respectivamente, versões de caractere largo e caracteres multibyte strcmp. _mbscmpreconhece sequências de caracteres multibyte de acordo com a página de código multibyte atual e retorna _NLSCMPERROR em caso de erro. Para obter mais informações, consulte Páginas de código. Além disso, se string1 ou string2 é um ponteiro nulo, _mbscmp invoca o manipulador de parâmetro inválido, como descrito em Validação do parâmetro. Se a execução puder continuar, _mbscmp retorna _NLSCMPERROR e define errno para EINVAL. strcmpe wcscmp não validam seus parâmetros. Essas três funções comportam idêntico caso contrário.
Mapeamentos da rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
O strcmp funções diferem do strcoll funções em que strcmp comparações são ordinais e não são afetadas pela localidade. strcollcompara cadeias de caracteres lexicograficamente usando o LC_COLLATE categoria da localidade atual. Para obter mais informações sobre o LC_COLLATE categoria, consulte setlocale, _wsetlocale.
Na localidade "C", a ordem de caracteres no conjunto de caracteres (conjunto de caracteres ASCII) é o mesmo que a ordem dos caracteres lexicográfica. No entanto, em outras localidades, a ordem de caracteres no conjunto de caracteres pode diferir da ordem lexicográfica. Por exemplo, em certas localidades européias, o caractere 'a' (valor 0x61) vem antes do caractere 'ç' (valor 0xE4) no conjunto de caracteres, mas o caractere 'ç' vem na frente do caractere 'a' lexicograficamente.
Em localidades para o qual o conjunto de caracteres e a ordem dos caracteres lexicográfica são diferentes, você pode usar strcoll em vez de strcmp para comparação lexicográfica de cadeias de caracteres. Como alternativa, você pode usar strxfrm em cadeias de caracteres originais e use strcmp em cadeias de caracteres resultantes.
O strcmp funções diferenciam maiúsculas de minúsculas. _stricmp, _wcsicmp, e _mbsicmp comparar cadeias de caracteres, primeiro converta-los aos formulários em minúsculas. Duas cadeias de caracteres que contêm caracteres que estão localizados entre 'Z' e 'a' na tabela ASCII ('[','\', '] ','^','_', e '`') comparar diferente, dependendo do seu caso. Por exemplo, duas cadeias de caracteres "ABCDE" e "ABCD^" comparar uma forma se a comparação é minúscula ("abcde" > "abcd^") e a outra forma ("ABCDE" < "ABCD^") se a comparação não diferencia letras maiúsculas.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> ou <wchar.h> |
_mbscmp |
<mbstring.h> |
Para obter informações adicionais sobre compatibilidade, consulte Compatibilidade.
Libraries
Todas as versões de bibliotecas de tempo de execução 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 da 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