Sdílet prostřednictvím


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Porovná až zadaný počet znaků dvou řetězců.

Důležité

_mbsncmpa _mbsncmp_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 strncmp(
   const char *string1,
   const char *string2,
   size_t count
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);

Parametry

string1, string2
Řetězce, které chcete porovnat.

count
Počet znaků, které mají být porovnány.

locale
Národní prostředí, které se má použít.

Vrácená hodnota

Vrácená hodnota označuje vztah podřetězenců string1 a string2 následujícím způsobem.

Vrácená hodnota Popis
< 0 string1 podřetětěžce menší než string2 podřetětěžka
0 string1 podřetětěžka shodná s string2 podřetětěcem
> 0 string1 podřetětěr větší než string2 podřetětěr

Při chybě _mbsncmp ověření parametru a _mbsncmp_l návrat _NLSCMPERROR, který je definován v <string.h> a <mbstring.h>.

Poznámky

Funkce strncmp provede řadové porovnání nejvýše prvních count znaků string1 a string2 vrátí hodnotu označující vztah mezi podřetězí. strncmp je verze rozlišující malá a velká písmena _strnicmp. wcsncmp a _mbsncmp jedná se o verze _wcsnicmp s rozlišováním velkých a malých písmen a _mbsnicmp.

wcsncmpa _mbsncmp jsou širokoznakové a vícebajtové verze .strncmp Argumenty jsou řetězce širokého wcsncmp znaku. Argumenty _mbsncmp jsou řetězce s vícebajtovými znaky. _mbsncmp rozpozná vícebajtové sekvence znaků podle vícebajtové znakové stránky a vrátí chybu _NLSCMPERROR .

_mbsncmp Také a _mbsncmp_l ověřte parametry. Pokud string1 nebo string2 je ukazatel null a count není roven 0, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat _mbsncmp provádění a _mbsncmp_l vrátit _NLSCMPERROR a nastavit errno na EINVAL. strncmp a wcsncmp neověřujte jejich parametry. Tyto funkce se chovají stejně jinak.

Chování porovnání _mbsncmp a _mbsncmp_l je ovlivněno nastavením LC_CTYPE nastavení kategorie národního prostředí. Tato funkce řídí detekci počátečních a koncových bajtů vícebajtových znaků. Další informace najdete na webu setlocale. Funkce _mbsncmp používá aktuální národní prostředí pro toto chování závislé na národním prostředí. Funkce _mbsncmp_l je shodná s tím rozdílem, že místo toho používá locale parametr. Další informace naleznete v tématu Národní prostředí. Pokud je národní prostředí jednobajtů, chování těchto funkcí je stejné jako strncmp.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

TCHAR.H Rutinní _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tcsnccmp strncmp _mbsncmp wcsncmp
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tccmp Mapy na makro nebo vloženou funkci _mbsncmp Mapy na makro nebo vloženou funkci

Požadavky

Rutina Požadovaný hlavičkový soubor
strncmp <string.h>
wcsncmp <string.h> nebo <wchar.h>
_mbsncmp, _mbsncmp_l <mbstring.h>

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

Příklad

// crt_strncmp.c
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
Compare strings:
      The quick brown dog jumps over the lazy fox
      The QUICK brown fox jumps over the lazy dog

Function:   strncmp (first 10 characters only)
Result:      String 1 is greater than string 2

Function:   strnicmp _strnicmp (first 10 characters only)
Result:      String 1 is equal to string 2

Viz také

Manipulace s řetězci
Národní prostředí
Interpretace vícebajtových sekvencí znaků
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
strcmp, wcscmp, _mbscmp
strcoll – funkce
_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