Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
|---|---|---|---|
_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 strcoll strcmp . 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