strcmp, wcscmp, _mbscmp, _mbscmp_l

Porównaj ciągi.

Ważne

_mbscmpnie można jej _mbscmp_l używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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
);
int _mbscmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   _locale_t locale
);

Parametry

string1, string2
Ciągi zakończone wartością null do porównania.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

Wartość zwracana dla każdej z tych funkcji wskazuje porządkową relację z wartością string1string2.

Wartość Relacja z string1string2
< 0 string1 jest mniejsza niż string2
0 string1 jest identyczny z string2
> 0 string1 jest większe niż string2

W przypadku błędu sprawdzania poprawności parametru _mbscmp i _mbscmp_l zwróć wartość _NLSCMPERROR, która jest zdefiniowana w elementy <string.h> i <mbstring.h>.

Uwagi

Funkcja strcmp wykonuje porządkowe porównanie string1 i string2 zwraca wartość wskazującą ich relację. wcscmpi _mbscmp są odpowiednio wersjami znaków wielobajtowych i wielobajtowych .strcmp _mbscmp rozpoznaje sekwencje wielobajtowe według bieżącej strony kodu wielobajtowego i zwraca błąd _NLSCMPERROR . _mbscmp_l ma to samo zachowanie, ale używa parametru ustawień regionalnych, który jest przekazywany zamiast bieżących ustawień regionalnych. Aby uzyskać więcej informacji, zobacz Strony kodu. Ponadto, jeśli string1 lub string2 jest wskaźnikiem null, _mbscmp wywołuje nieprawidłową procedurę obsługi parametrów zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, _mbscmp i zwracanie _mbscmp_l_NLSCMPERROR i ustawianie wartości errno .EINVAL strcmp i wcscmp nie weryfikuj ich parametrów. Te funkcje zachowują się identycznie inaczej.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

TCHAR.H Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tcscmp strcmp _mbscmp wcscmp

Funkcje strcmp różnią się od strcoll funkcji w tych strcmp porównaniach porządkowych i nie mają wpływu na ustawienia regionalne. strcoll porównuje ciągi leksykograficznie przy użyciu LC_COLLATE kategorii bieżących ustawień regionalnych. Aby uzyskać więcej informacji na temat LC_COLLATE kategorii, zobacz setlocale, _wsetlocale.

W ustawieniach regionalnych "C" kolejność znaków w zestawie znaków (zestaw znaków ASCII) jest taka sama jak kolejność znaków leksykograficznych. Jednak w innych ustawieniach regionalnych kolejność znaków w zestawie znaków może różnić się od kolejności leksykograficznej. Na przykład w niektórych europejskich ustawieniach regionalnych znak "a" (wartość 0x61) występuje przed znakiem "ä" (wartość 0xE4) w zestawie znaków, ale znak "ä" jest przed znakiem "a" leksykograficznie.

W ustawieniach regionalnych, dla których zestaw znaków i kolejność znaków leksykograficznej różnią się, można użyć strcoll zamiast strcmp do porównania leksykograficznego ciągów. Alternatywnie można użyć strxfrm w oryginalnych ciągach, a następnie użyć strcmp w ciągach wynikowych.

W strcmp funkcjach jest rozróżniana wielkość liter. _stricmp, _wcsicmpi _mbsicmp porównaj ciągi, najpierw konwertując je na małe litery. Dwa ciągi zawierające znaki znajdujące się między znakami "Z" i "a" w tabeli ASCII ("[, "", "\\", "]^", "_" i "`") są porównywane inaczej, w zależności od ich przypadku. Na przykład dwa ciągi "ABCDE" i "ABCD^" porównują jeden sposób, jeśli porównanie ma małe litery ("" > "abcdeabcd^") i drugą stronę ("ABCDE" < "ABCD^"), jeśli porównanie jest wielkie.

Wymagania

Procedura Wymagany nagłówek
strcmp <string.h>
wcscmp <string.h> lub <wchar.h>
_mbscmp <mbstring.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Wszystkie wersje bibliotek czasu wykonywania języka C.

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

Zobacz też

Manipulowanie ciągami
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