strcmp, wcscmp, _mbscmp
Porovnání řetězců.
![]() |
---|
_mbscmpnelze použít v aplikacích, které jsou spuštěny v Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /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
Řetězce zakončené znakem null pro porovnání.
Vrácená hodnota
Vrácená hodnota pro každou z těchto funkcí označuje vztah lexicographic string1 na string2.
Value |
Vztah řetězec1 k řetězec2 |
---|---|
< 0 |
string1je menší nežstring2 |
0 |
string1je totožný sstring2 |
> 0 |
string1je větší nežstring2 |
Na chybu _mbscmp vrátí _NLSCMPERROR, který je definován v ŘETĚZCI.H a MBSTRING.H.
Poznámky
strcmp Fungovat porovná string1 a string2 lexicographically a vrátí hodnotu, která označuje jejich vzájemný vztah.wcscmpa _mbscmp , jsou verze širokého znaku a vícebajtové znakové sady strcmp._mbscmprozpozná vícebajtové znakové sekvence podle aktuální vícebajtová znaková stránka a vrátí _NLSCMPERROR na chybu.Další informace naleznete v tématu Kódové stránky.Také pokud string1 nebo string2 je nulový ukazatel, _mbscmp vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametrů.Je-li pokračovat, je povoleno zpracování _mbscmp vrátí _NLSCMPERROR a errno na EINVAL.strcmpa wcscmp nelze ověřit jejich parametry.Tyto tři funkce chovat identicky jinak.
Mapování rutiny obecného textu
TCHAR.Byla zahájena rutina h |
_UNICODE & _MBCS není definováno |
_MBCS, definice |
_UNICODE definována |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
strcmp Funkce se liší od strcoll funkce v tomto strcmp porovnání neovlivní národní prostředí, že způsob strcoll srovnání závisí LC_COLLATE kategorie aktuální národní prostředí.Další informace o LC_COLLATE kategorie, viz setlocale _wsetlocale.
"C" národní prostředí je pořadí znaků znakové sady (znaková sada ASCII) shodné s pořadím lexicographic znaků.V dalších národních prostředích však pořadí znaků ve znakové sadě může lišit od lexicographic objednávky.Například v některých evropských národních prostředí, znak "" (hodnota 0x61) předchází znak 'ä' (0xE4) v znak nastavena hodnota, ale znak 'ä' předchází znak 'a' lexicographically.
V prostředí, pro které se liší ve znakové sadě a pořadí lexicographic znaků, použijte strcoll spíše než strcmp pro lexicographic porovnání řetězců podle LC_COLLATE kategorie nastavení aktuální národní prostředí.Plnit lexicographic srovnání národního prostředí ve výše uvedeném příkladu použijte strcoll spíše než strcmp.Alternativně můžete použít strxfrm na původní řetězce pomocí strcmp ve výsledném řetězci.
_stricmp, _wcsicmp, a _mbsicmp porovnání řetězců převedením první tvoří malá písmena.Dva řetězce, které obsahují znaky, které jsou umístěny mezi "Z" a "a" v tabulce ASCII ("[','\', ']","^','_", a "`") porovnat různě, v závislosti na jejich případ.Například dva řetězce "ABCDE" a "ABCD^" porovnat jeden ze způsobů, je-li srovnání malými písmeny ("abcde" > "abcd^") a jiným způsobem ("ABCDE" < "ABCD^") je-li porovnání velká písmena.
Požadavky
Byla zahájena rutina |
Požadované záhlaví |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> nebo <wchar.h> |
_mbscmp |
<mbstring.h> |
Další informace o kompatibilitě, viz Kompatibilita.
Knihovny
Všechny verze C run-time libraries.
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 );
}
Ekvivalent v rozhraní .NET Framework
System::String::CompareOrdinal
Viz také
Referenční dokumentace
_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