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

Zacházení s řetězci (CRT)

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