Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Executa uma comparação que não diferencia maiúsculas de minúsculas na cadeia de caracteres.
Importante
_mbsicmp e _mbsicmp_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 _stricmp(
const char *string1,
const char *string2
);
int _wcsicmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbsicmp(
const unsigned char *string1,
const unsigned char *string2
);
int _stricmp_l(
const char *string1,
const char *string2,
_locale_t locale
);
int _wcsicmp_l(
const wchar_t *string1,
const wchar_t *string2,
_locale_t locale
);
int _mbsicmp_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
Parâmetros
string1, string2
Cadeias de caracteres com terminação nula.
locale
Localidade a usar.
Valor retornado
O valor retornado indica a relação de string1 para string2 da seguinte maneira.
| Valor retornado | Descrição |
|---|---|
| < 0 | string1 é menor que string2 |
| 0 | string1 é idêntica a string2 |
| > 0 | string1 é maior que string2 |
Se ocorrer um erro, _mbsicmp retorna _NLSCMPERROR, que é definido no <string.h> e no <mbstring.h>.
Comentários
A _stricmp função compara string1 e string2 depois de converter cada caractere em minúsculas e retorna um valor indicando sua relação. _stricmp é diferente de _stricoll que a comparação com _stricmp será afetada somente por LC_CTYPE, que determina quais caracteres são letras maiúsculas e minúsculas. A função _stricoll compara cadeias de caracteres de acordo com ambas as categorias LC_CTYPE e LC_COLLATE de localidade, que inclui o caso e a ordem de ordenação. Para obter mais informações sobre a LC_COLLATE categoria, consulte setlocale Categorias de localidade. As versões dessas funções sem o sufixo _l usam a localidade atual para o comportamento que depende da localidade. As versões com o sufixo são idênticas, com exceção de que usam a localidade passada, em vez da localidade atual. Se a localidade não tiver sido definida, a localidade C será usada. Para obter mais informações, consulte Localidade.
Observação
_stricmp é equivalente a _strcmpi. Podem ser usadas alternadamente, mas _stricmp é o padrão preferencial.
A função _strcmpi é equivalente a _stricmp e é fornecido para fins de compatibilidade com versões anteriores.
Como _stricmp realiza comparações de minúsculas, pode resultar em comportamento inesperado.
Para ilustrar quando a conversão de maiúsculas e minúsculas feita por _stricmp afeta o resultado de uma comparação, suponha que você tem duas cadeias de caracteres JOHNSTON e JOHN_HENRY. A cadeia de caracteres JOHN_HENRY será considerada menor que JOHNSTON porque "_" tem um valor ASCII menor que um S minúsculo. Na verdade, qualquer caractere que tenha um valor no ASCII entre 91 e 96 será considerado menor do que qualquer letra.
Se a função strcmp for usada em vez de _stricmp, JOHN_HENRY será maior que JOHNSTON.
_wcsicmp e _mbsicmp são versões de caracteres largos e de caracteres multibyte de _stricmp. Os argumentos e o valor retornado de _wcsicmp são cadeias de caracteres largos. Os argumentos e o valor retornado de são cadeias de _mbsicmp caracteres multibyte. _mbsicmp reconhece sequências de caracteres multibyte de acordo com a página de código multibyte atual e retorna _NLSCMPERROR em um erro. Para obter mais informações, consulte Páginas de código. Caso contrário, essas três funções se comportam de forma idêntica.
_wcsicmp e wcscmp se comportam de forma idêntica, exceto que wcscmp não converte seus argumentos em minúsculas antes de compará-los. _mbsicmp e _mbscmp se comportam de forma idêntica, exceto que _mbscmp não converte seus argumentos em minúsculas antes de compará-los.
Você precisará pedir setlocale _wcsicmp para trabalhar com caracteres latinos 1. A localidade C está em vigor por padrão, portanto, por exemplo, ä não será comparado igual a Ä. Chamar setlocale com qualquer localidade que não seja a localidade C antes da chamada para _wcsicmp. A amostra a seguir demonstra como _wcsicmp é sensível à localidade:
// crt_stricmp_locale.c
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).
#include <string.h>
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL,"C"); // in effect by default
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare fails
setlocale(LC_ALL,"");
printf("\n%d",_wcsicmp(L"ä", L"Ä")); // compare succeeds
}
Uma alternativa é chamar _create_locale, _wcreate_locale e passar o objeto de localidade retornado como um parâmetro para _wcsicmp_l.
Todas essas funções validam seus parâmetros. Se um ou string1 forem string2 ponteiros nulos, o manipulador de parâmetro inválido será chamado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, essas funções retornarão _NLSCMPERROR e definirão errno para EINVAL.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
|---|---|---|---|
_tcsicmp |
_stricmp |
_mbsicmp |
_wcsicmp |
Requisitos
| Rotina | Cabeçalho necessário |
|---|---|
_stricmp, _stricmp_l |
<string.h> |
_wcsicmp, _wcsicmp_l |
<string.h> ou <wchar.h> |
_mbsicmp, _mbsicmp_l |
<mbstring.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// crt_stricmp.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
Confira também
Manipulação de cadeia de caracteres
memcmp, wmemcmp
_memicmp, _memicmp_l
strcmp, wcscmp, _mbscmp
Funções strcoll
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_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