Sdílet prostřednictvím


_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

Provede porovnání řetězců bez rozlišování velkých a malých písmen.

Důležité

_mbsicmpa _mbsicmp_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 _stricmp(
   const char *string1,
   const char *string2
);
int _wcsicmp(
   const wchar_t *string1,
   const wchar_t *string2
);
int _mbsicmp(
   const unsigned char *string1,
   const unsigned char *string2
);
int _stricmp_l(
   const char *string1,
   const char *string2,
   _locale_t locale
);
int _wcsicmp_l(
   const wchar_t *string1,
   const wchar_t *string2,
   _locale_t locale
);
int _mbsicmp_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 označuje vztah k string2 následujícímustring1.

Vrácená hodnota Popis
< 0 string1 menší než string2
0 string1 shodný s string2
> 0 string1 větší než string2

Při chybě vrátí hodnotu _mbsicmp_NLSCMPERROR, která je definována v <string.h> a <mbstring.h>.

Poznámky

Funkce _stricmp porovnává string1 a string2 po převodu jednotlivých znaků na malá písmena a vrátí hodnotu označující jejich vztah. _stricmp liší se od _stricoll toho, že _stricmp porovnání je ovlivněno LC_CTYPEpouze , což určuje, které znaky jsou velká a malá písmena. Funkce _stricoll porovnává řetězce podle LC_CTYPE kategorií národního LC_COLLATE prostředí, což zahrnuje jak velikost písmen, tak pořadí kolace. Další informace o LC_COLLATE kategorii najdete v tématech setlocale a kategoriích národního prostředí. Verze těchto funkcí bez _l přípony používají aktuální národní prostředí pro chování závislé na národním prostředí. Verze s příponou jsou shodné s tím rozdílem, že místo toho používají národní prostředí předané. Pokud národní prostředí nebylo nastaveno, použije se národní prostředí jazyka C. Další informace naleznete v tématu Národní prostředí.

Poznámka

_stricmp je ekvivalent _strcmpi. Lze je použít zaměnitelně, ale _stricmp je upřednostňovaným standardem.

Funkce _strcmpi je ekvivalentní _stricmp a je poskytována pouze pro zpětnou kompatibilitu.

Vzhledem k tomu _stricmp , že porovnávání malými písmeny může vést k neočekávanému chování.

Chcete-li ilustrovat, kdy převod _stricmp případů ovlivňuje výsledek porovnání, předpokládejme, že máte dva řetězce JOHNSTON a JOHN_HENRY. Řetězec JOHN_HENRY bude považován za menší, než JOHNSTON protože "_" má nižší hodnotu ASCII než malá písmena S. Ve skutečnosti bude každý znak, který má hodnotu ASCII mezi 91 a 96, považován za menší než jakékoli písmeno.

strcmp Pokud je funkce použita místo _stricmp, JOHN_HENRY bude větší než JOHNSTON.

_wcsicmpa _mbsicmp jsou širokoznakové a vícebajtové verze ._stricmp Argumenty a návratová hodnota jsou řetězce širokého znaku _wcsicmp . Argumenty a návratová _mbsicmp hodnota jsou řetězce s vícebajtovými znaky. _mbsicmp rozpozná vícebajtové sekvence znaků podle aktuální vícebajtové znakové stránky a vrátí chybu _NLSCMPERROR . Další informace najdete v tématu Kódové stránky. Tyto tři funkce se chovají stejně jinak.

_wcsicmp a wcscmp chovejte se stejně, s tím rozdílem, že wcscmp před porovnáním argumentů nepřevádí argumenty na malá písmena. _mbsicmp a _mbscmp chovejte se stejně, s tím rozdílem, že _mbscmp před porovnáním argumentů nepřevádí argumenty na malá písmena.

Budete muset volat setlocale , _wcsicmp abyste mohli pracovat s latinkou 1 znaky. Národní prostředí jazyka C je ve výchozím nastavení účinné, takže například ä se nerovná Ä. Před voláním volejte setlocale_wcsicmps jakýmkoli jiným národním prostředím než národním prostředím jazyka C . Následující ukázka ukazuje, jak _wcsicmp je citlivé na národní prostředí:

// crt_stricmp_locale.c
By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md).

#include <string.h>
#include <stdio.h>
#include <locale.h>

int main() {
   setlocale(LC_ALL,"C");   // in effect by default
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare fails
   setlocale(LC_ALL,"");
   printf("\n%d",_wcsicmp(L"ä", L"Ä"));   // compare succeeds
}

Alternativou je volání _create_locale_wcreate_localea předání vráceného objektu národního prostředí jako parametru ._wcsicmp_l

Všechny tyto funkce ověřují své parametry. Pokud jsou nebo string2string1 jsou ukazatele null, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru . Pokud provádění může pokračovat, tyto funkce se vrátí _NLSCMPERROR a nastaví errno na EINVAL.

Mapování rutin obecného textu

TCHAR.H Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tcsicmp _stricmp _mbsicmp _wcsicmp

Požadavky

Rutina Požadovaný hlavičkový soubor
_stricmp, _stricmp_l <string.h>
_wcsicmp, _wcsicmp_l <string.h> nebo <wchar.h>
_mbsicmp, _mbsicmp_l <mbstring.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt_stricmp.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
strcmp, wcscmp, _mbscmp
strcoll – funkce
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l
strspn, wcsspn, _mbsspn, _mbsspn_l