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)

memcmp, wmemcmp

_memicmp, _memicmp_l

Funções strcoll

_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

strspn, wcsspn, _mbsspn, _mbsspn_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l