Udostępnij za pośrednictwem


strcmp, wcscmp, _mbscmp

Służy do porównywania ciągów znaków.

Ważna uwagaWażne

_mbscmpNie można używać w aplikacji, których wykonywanie w Środowisko wykonawcze systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /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
    Zakończony zerem ciągów do porównania.

Wartość zwracana

Wartość zwracana dla każdej z tych funkcji wskazuje typ relacji leksykograficznych z string1 do string2.

Wartość

Relacja ciąg1 do ciąg2

< 0

string1jest mniejsza niżstring2

0

string1jest identyczny zstring2

> 0

string1jest większa niżstring2

Na błąd _mbscmp zwraca _NLSCMPERROR, który jest zdefiniowany w ciągu.H i MBSTRING.H.

Uwagi

strcmp Funkcja porównuje string1 i string2 leksykograficznym i zwraca wartość wskazująca, że ich relacji.wcscmpi _mbscmp są odpowiednio szerokich znaków i znaków wielobajtowych wersjami 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 jest pusty wskaźnik, _mbscmp wywołuje program obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, _mbscmp zwraca _NLSCMPERROR i ustawia errno do EINVAL.strcmpi wcscmp nie są zgodne z nimi parametrów.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcscmp

strcmp

_mbscmp

wcscmp

strcmp Funkcje różnią się od strcoll funkcje w tym strcmp porównania nie dotyczy ustawień regionalnych, podczas gdy sposób strcoll porównań jest określana przez LC_COLLATE kategorii zgodnie z ustawieniami lokalnymi.Aby uzyskać więcej informacji o LC_COLLATE kategorii, zobacz setLocale, _wsetlocale.

W ustawieniach regionalnych "C" kolejność znaków z zestawu znaków (zestaw znaków ASCII) jest taka sama jak kolejność znaków leksykograficznych.Jednak w innych lokalizacjach, kolejność znaków w zestawie znaków mogą różnić się od kolejności leksykograficznych.Na przykład w niektórych ustawień regionalnych, znak wartość "" (0x61) poprzedza znak "ä" (0xE4) w postaci wartość, lecz postać "ä" poprzedza znak '' leksykograficznym.

W odniesieniu do których zestawu znaków i kolejność znaków leksykograficznych różnią się ustawień regionalnych, należy użyć strcoll a nie strcmp dla leksykograficznych porównania ciągów według LC_COLLATE kategorii ustawienie bieżące ustawienia regionalne.Aby przeprowadzić porównanie leksykograficznych określone w ustawieniach regionalnych w powyższym przykładzie, należy użyć strcoll a nie strcmp.Alternatywnie można skorzystać z strxfrm na oryginalny ciągów służą strcmp na ciągi wynikowy.

_stricmp, _wcsicmp, i _mbsicmp porównywania ciągów znaków poprzez pierwszego ich konwersję do swoich formularzy małymi literami.Dwa ciągi, które zawierają znaki znajdujące się pomiędzy "Z" i "" w tabeli ASCII ("[","\', '] ','^","_", i "`") porównać różnie w zależności od tego, w ich przypadku.Na przykład dwóch ciągów i "ABCDE" i "ABCD^" porównanie jednym ze sposobów, jeśli wynikiem porównania jest małymi literami ("abcde" > "abcd^") i w inny sposób ("ABCDE" < "ABCD^") Jeśli wynikiem porównania jest wielkimi literami.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strcmp

<string.h>

wcscmp

<string.h> lub <wchar.h>

_mbscmp

<mbstring.h>

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

Biblioteki

Wszystkie wersje programu biblioteki uruchomieniowej 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 );
}
  

Odpowiednik w programie .NET Framework

System::String::CompareOrdinal

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

Funkcje 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