Udostępnij za pośrednictwem


strcmp, wcscmp, _mbscmp

Porównaj ciągi.

Ważna uwagaWażne

_mbscmpNie można używać w aplikacji, które są wykonywane w Środowisko wykonawcze systemu Windows.Aby uzyskać więcej informacji, zobacz funkcji CRT nie obsługują /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 
);

Parametry

  • string1, string2
    Ciągi zerem do porównania.

Wartość zwracana

Wartość zwracana dla każdej z tych funkcji wskazuje {numer porządkowy relacji z string1 do string2.

Wartość

Relacja z ciąg1 do ciąg2

< 0

string1 jest mniejsze niż string2

0

string1 jest taka sama, jak string2

> 0

string1 jest większa niż string2

Na błąd sprawdzania poprawności parametru _mbscmp zwraca _NLSCMPERROR, która została zdefiniowana w < string.h > i < mbstring.h >.

Uwagi

strcmp {Numer porządkowy porównanie wykonuje funkcję string1 i string2 i zwraca wartość wskazującą, ich relacji.wcscmpi _mbscmp są odpowiednio całego znaku i znaków wielobajtowych wersja strcmp._mbscmprozpoznaje sekwencje znaków wielobajtowych zgodnie z bieżącej strony kodowej wielobajtowych i zwraca _NLSCMPERROR na błąd.Aby uzyskać więcej informacji, zobacz Strony kodowe.Ponadto jeśli string1 lub string2 wskaźnik null, _mbscmp wywołuje program obsługi nieprawidłowy parametr zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli jest dozwolone wykonywanie, aby kontynuować, _mbscmp zwraca _NLSCMPERROR i ustawia errno do EINVAL.strcmpi wcscmp nie sprawdza poprawność ich parametrów.Te trzy funkcje zachowują się tak samo w przeciwnym razie.

Mapowania procedur zwykłego tekstu

Procedura TCHAR.H

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowano

_tcscmp

strcmp

_mbscmp

wcscmp

strcmp Funkcje różnią się od strcoll funkcje, w tym strcmp porównania są {numer porządkowy, a nie dotyczy ustawień regionalnych.strcollporównuje ciągi lexicographically przy użyciu LC_COLLATE kategorii bieżących ustawień regionalnych.Aby uzyskać więcej informacji na temat LC_COLLATE kategorii, zobacz setlocale, _wsetlocale.

Kolejność znaków w zestawie znaków (zestaw znaków ASCII) w ustawieniach regionalnych "C", jest taka sama jak kolejność lexicographic znaków.Jednak w innych lokalizacjach kolejność znaków w zestawie znaków może różnić się od lexicographic kolejność.Na przykład w niektórych ustawień regionalnych Europejskiego, znak "" (wartość 0x61) znajduje się przed znak "ź" (wartość 0xE4) w zestawie znaków, ale znak "ź" pochodzi przed znakiem "" lexicographically.

W regionalnych, dla których różnią się zestaw znaków i kolejność lexicographic znaków, można użyć strcoll zamiast strcmp lexicographic porównywania ciągów.Można również użyć strxfrm na ciągi oryginalny, a następnie użyj strcmp na ciągach wynikowe.

strcmp w funkcjach jest rozróżniana wielkość liter._stricmp, _wcsicmp, i _mbsicmp porównywania ciągów konwertując pierwszy je na małe litery formularzy.Dwa ciągi, które zawierają znaki, które znajdują się między "Z" i "" w tabeli ASCII ("[","\", "]","^","_", i "`") porównania inaczej, w zależności od ich przypadku.Na przykład dwa ciągi "ABCDE" i "ABCD^" porównania jeden ze sposobów, jeśli wynikiem porównania jest małe litery ("abcde" > "abcd^") i w inny sposób ("ABCDE" < "ABCD^"), jeśli wynikiem porównania jest wielkie litery.

Wymagania

Procedura

Wymagany nagłówek

strcmp

< string.h >

wcscmp

< string.h > lub < wchar.h >

_mbscmp

< mbstring.h >

Aby uzyskać dodatkowe informacje o zgodności, zobacz Zgodność.

Biblioteki

Wszystkie wersje C biblioteki czasu wykonywania.

Przykład

// 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 );
}
  

Odpowiednik w programie .NET Framework

System::String::CompareOrdinal

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcoll — Funkcje

_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