strcmp, wcscmp, _mbscmp
Porovnání řetězců.
Důležité |
---|
_mbscmpnelze použít v aplikacích, které jsou spuštěny v prostředí Windows Runtime.Další informace naleznete v tématu CRT funkce nepodporované 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
Ukončený hodnotou Null řetězce k porovnání.
Vrácená hodnota
Návratová hodnota pro každou z těchto funkcí určuje pořadí poměr string1 k string2.
Hodnota |
Vztah mezi řetězec1 k řetězec2 |
---|---|
< 0 |
string1 je menší než string2 |
0 |
string1 je shodná s string2 |
> 0 |
string1 je větší než string2 |
Na chybu ověření parametru _mbscmp vrátí _NLSCMPERROR, který je definován v < string.h > a < mbstring.h >.
Poznámky
strcmp Funkce provádí porovnávání pomocí pořadového čísla string1 a string2 a vrátí hodnotu, která určuje jejich relace.wcscmpa _mbscmp jsou v uvedeném pořadí, verze širokého znaku a multibajtové znakové strcmp._mbscmprozpozná multibajtové znakové pořadí podle aktuální více znakovou stránku a vrátí _NLSCMPERROR na chybu.Další informace naleznete v tématu Znakové stránky.Také pokud string1 nebo string2 je ukazatel s hodnotou null, _mbscmp vyvolá obslužnou rutinu neplatný parametr, jak je popsáno v Ověření parametru.Pokud chcete-li pokračovat, je povoleno zpracování _mbscmp vrátí _NLSCMPERROR a nastaví errno k EINVAL.strcmpa wcscmp nelze ověřit jejich parametry.Tyto tři funkce chovat stejně jako v opačném případě.
Mapování rutin obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definována. |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
strcmp Funkce se liší od strcoll funkce v tomto strcmp porovnání se pořadové číslo a nevztahují na národní prostředí.strcollPorovná řetězce lexicographically s použitím LC_COLLATE kategorie aktuální národní prostředí.Další informace o LC_COLLATE kategorie, naleznete v části setlocale, _wsetlocale.
Pořadí znaků ve znakové sadě (znaková sada ASCII) v národním prostředí "C", je stejné jako pořadí lexicographic znaků.V dalších národních prostředích, může však na pořadí znaků ve znakové sadě lišit od lexicographic pořadí.Například v určitých Evropského národní prostředí je znak "a" (hodnota 0x61) zaslána před znak "č" (hodnota 0xE4) ve znakové sadě, ale je znak "č" zaslána před znak 'a' lexicographically.
V prostředí, pro které se liší znakové sady a pořadí lexicographic znaků, můžete použít strcoll namísto strcmp pro lexicographic porovnání řetězců.Alternativně můžete použít strxfrm na původní řetězce a potom použijete strcmp na výsledném řetězci.
strcmp Funkce jsou malá a velká písmena._stricmp, _wcsicmp, a _mbsicmp porovnání řetězců převedením první na malá písmena formuláře.Dva řetězce, které obsahují znaky, které jsou umístěny mezi "Z" a 'a' v tabulce ASCII ('[','\', '] ','^','_", a"`') porovnání lišit v závislosti na jejich případu.Můžete například dva řetězce "ABCDE" a "ABCD^" porovnat jeden ze způsobů, je-li porovnání malá písmena ("abcde" > "abcd^") a jiným způsobem ("ABCDE" < "ABCD^") je-li porovnání velká písmena.
Požadavky
Rutina |
Požadovaný hlavičkový soubor |
---|---|
strcmp |
< string.h > |
wcscmp |
< string.h > nebo < wchar.h > |
_mbscmp |
< mbstring.h > |
Další informace o kompatibilitě, naleznete v části Kompatibilita.
Knihovny
Všechny verze knihoven C run-time.
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