Partilhar via


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)

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