Share via


strcmp, wcscmp, _mbscmp

Compare cadeias de caracteres.

Observação importanteImportante

_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)

memcmp, wmemcmp

_memicmp, _memicmp_l

Funções de 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