Sdílet prostřednictvím


strcmp, wcscmp, _mbscmp

Porovnání řetězců.

Důležitá poznámkaDůležité

_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

Manipulaci s řetězci (CRT)

memcmp wmemcmp

_memicmp _memicmp_l

Funkce 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