Sdílet prostřednictvím


strcmp, wcscmp, _mbscmp, _mbscmp_l

Porovnejte řetězce.

Důležité

_mbscmpa _mbscmp_l nelze je použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

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
Řetězce ukončené hodnotou null, které se mají porovnat.

locale
Národní prostředí, které se má použít.

Vrácená hodnota

Návratová hodnota pro každou z těchto funkcí označuje pořadový vztah string1 k string2.

Hodnota string1 Vztah kstring2
< 0 string1 je menší než string2
0 string1 je shodná s string2
> 0 string1 je větší než string2

Při chybě _mbscmp ověření parametru a _mbscmp_l návrat _NLSCMPERROR, který je definován v <string.h> a <mbstring.h>.

Poznámky

Funkce strcmp provede pořadové porovnání string1 a string2 vrátí hodnotu, která označuje jejich vztah. wcscmpa _mbscmp jsou v uvedeném pořadí širokoznakové a vícebajtové verze .strcmp _mbscmp rozpozná vícebajtové sekvence znaků podle aktuální vícebajtové znakové stránky a vrátí chybu _NLSCMPERROR . _mbscmp_l má stejné chování, ale používá parametr národního prostředí, který se předává místo aktuálního národního prostředí. Další informace najdete v tématu Kódové stránky. string1 Pokud nebo string2 je ukazatel null, _mbscmp vyvolá neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat _mbscmp provádění a _mbscmp_l vrátit _NLSCMPERROR a nastavit errno na EINVAL. strcmp a wcscmp neověřujte jejich parametry. Tyto funkce se chovají stejně jinak.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

TCHAR.H Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tcscmp strcmp _mbscmp wcscmp

Funkce strcmp se liší od strcoll funkcí v porovnání, které strcmp jsou řadové a nejsou ovlivněny národním prostředím. strcoll porovnává řetězce lexicicky pomocí LC_COLLATE kategorie aktuálního národního prostředí. Další informace o LC_COLLATE kategorii naleznete v tématu setlocale, _wsetlocale.

V národním prostředí "C" je pořadí znaků v znakové sadě (znaková sada ASCII) stejné jako pořadí lexikálních znaků. V jiných národních prostředích se však pořadí znaků v znakové sadě může lišit od lexikálního pořadí. Například v některých evropských národních prostředích je znak "a" (hodnota 0x61) před znakem "ä" (hodnota 0xE4) v znakové sadě, ale znak "ä" je před znakem "a" lexikograficky.

V národních prostředích, pro které se znaková sada a lexikální pořadí znaků liší, můžete místo pro lexikální porovnání řetězců použít strcollstrcmp . Alternativně můžete použít strxfrm u původních řetězců a pak použít strcmp výsledné řetězce.

U strcmp funkcí se rozlišují malá a velká písmena. _stricmpa porovnejte řetězce tak, _wcsicmp_mbsicmp že je nejprve převedete na jejich malá písmena. Dva řetězce, které obsahují znaky, které jsou umístěny mezi "Z" a "a" v tabulce ASCII ('[, '', '\\, '], '^, '_' a '`' ) porovnávají odlišně v závislosti na jejich případu. Například dva řetězce "ABCDE" a "ABCD^" porovnávají jeden způsob, pokud je porovnání malými písmeny ("abcde" > "abcd^") a druhým způsobem ("ABCDE" < "ABCD^") pokud je porovnání velkými písmeny.

Požadavky

Rutina Požadovaný hlavičkový soubor
strcmp <string.h>
wcscmp <string.h> nebo <wchar.h>
_mbscmp <mbstring.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Knihovny

Všechny verze knihoven runtime jazyka C.

Příklad

// 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

Viz také

Manipulace s řetězci
memcmp, wmemcmp
_memicmp, _memicmp_l
strcoll – funkce
_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