strcmp wcscmp, _mbscmp
comparar cadeias de caracteres.
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
Seqüências de terminação nula para comparar.
Valor de retorno
O valor retornado para cada uma dessas funções indica a relação lexicographic de string1 para string2*.*
Valor |
Relação de seqüência1 para seqüência2 |
---|---|
< 0 |
string1 menor que string2 |
0 |
string1 idêntico a string2 |
> 0 |
string1 maior que string2 |
Em um erro, _mbscmp Retorna _NLSCMPERROR, que é definido em STRING.H e MBSTRING.H.
Comentários
The strcmp função compara string1 e string2 lexicograficamente e retorna um valor indicando seu Relação. wcscmp e _mbscmp são, respectivamente, versões do caractere largo e caracteres multibyte strcmp. _mbscmp reconhece seqüências de caractere multibyte de acordo com a página de código multibyte corrente e retorna _NLSCMPERROR em um erro. (Para obter mais informações, consulte Páginas de código.) Além disso, se string1 ou string2 é um ponteiro nulo, _mbscmp chama o manipulador de parâmetro inválido sistema autônomo descrito em Validação de parâmetro. Se a execução for permitida para continuar, _mbscmp Retorna _NLSCMPERROR e conjuntos errno para EINVAL. strcmp e wcscmp não validam seus parâmetros. Especifique estas três funções identicamente outro comportam.
Mapeamentos de rotina de texto genérica
Rotina TCHAR.H |
_UNICODE & _MBCS não definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
The strcmp funções diferem do strcoll funções em que strcmp as comparações não são afetadas pela localidade, enquanto a forma de strcoll comparações é determinado pela LC_COLLATE categoria da localidade corrente. Para obter mais informações sobre o LC_COLLATE categoria, consulte setlocale.
Na localidade "C", a ordem dos caracteres no conjunto de caracteres (conjunto de caracteres ASCII) é igual à ordem lexicographic caractere.No entanto, em outras localidades, a ordem dos caractere a conjunto de caractere pode ser diferente da ordem lexicographic.Por exemplo, em determinados locais europeus, o caractere 'a' (valor 0x61) precede o caractere 'ç' (valor 0xE4) no caractere definido, mas o caractere 'ç' precede o caractere 'a' lexicograficamente.
Em localidades para as quais o conjunto de caracteres e a ordem de caractere lexicographic são diferentes, usar strcoll em vez de strcmp para lexicographic comparação de seqüências de caracteres de acordo com o LC_COLLATE categoria de configuração de localidade corrente. Assim, para realizar uma comparação entre lexicographic a localidade no exemplo acima, use strcoll em vez de strcmp. Como alternativa, você pode usar strxfrm em seqüências de caracteres originais, em seguida, use strcmp em seqüências de caracteres resultantes.
_stricmp, _wcsicmp, e _mbsicmp comparar cadeias de caracteres, convertendo-os primeiro para seus formulários em minúsculas. Duas seqüências de caracteres contendo caracteres localizado entre 'Z' e 'a' na tabela ASCII (' [',' \','] ','^''_', e '`') comparar diferente, dependendo do seu caso. Por exemplo, as duas strings "ABCDE" e "ABCD^" comparar uma forma se a comparação for (em minúsculas"abcde"> "abcd^") e Outros (de forma"ABCDE"< "ABCD^") se a comparação for maiúscula.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> ou <wchar.h> |
_mbscmp |
<mbstring.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Bibliotecas
Todas as versões do C em time de execução bibliotecas.
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 );
}
Compare strings: The quick brown dog jumps over the lazy fox The QUICK brown dog jumps over the lazy fox strcmp: String 1 is greater than string 2 _stricmp: String 1 is equal to string 2
Equivalente do NET Framework
sistema::String::CompareOrdinal
Consulte também
Referência
Manipulação de seqüência 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