strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Porównuje się z określoną liczbą znaków dwóch ciągów.

Ważne

_mbsncmpnie można jej _mbsncmp_l używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.

Składnia

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
Ciągi do porównania.

count
Liczba znaków do porównania.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

Wartość zwracana wskazuje relację podciągów string1 i string2 w następujący sposób.

Wartość zwracana opis
< 0 string1 podciąg mniejsze niż string2 podciąg
0 string1 podciąg taki sam jak string2 podciąg
> 0 string1 podciąg większy niż string2 podciąg

W przypadku błędu sprawdzania poprawności parametru _mbsncmp i _mbsncmp_l zwróć wartość _NLSCMPERROR, która jest zdefiniowana w elementy <string.h> i <mbstring.h>.

Uwagi

Funkcja strncmp wykonuje porównywanie porządkowe co najwyżej pierwszych count znaków i string1string2 zwraca wartość wskazującą relację między podciągami. strncmpjest wersją z uwzględnieniem wielkości liter ._strnicmp wcsncmp i _mbsncmp to wersje z uwzględnieniem wielkości liter i _wcsnicmp_mbsnicmp.

wcsncmpi _mbsncmp są wersjami znaków wielobajtowych i wielobajtowych .strncmp Argumenty to wcsncmp ciągi o szerokim znaku. Argumenty funkcji to ciągi wielobajtowe _mbsncmp znaków. _mbsncmp rozpoznaje sekwencje wielobajtowe znaków zgodnie ze stroną kodu wielobajtowego i zwraca błąd _NLSCMPERROR .

_mbsncmp Ponadto i _mbsncmp_l zweryfikuj parametry. Jeśli string1 lub string2 jest wskaźnikiem o wartości null i count nie jest równy 0, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, _mbsncmp i zwracanie _mbsncmp_l_NLSCMPERROR i ustawianie wartości errno .EINVAL strncmp i wcsncmp nie weryfikuj ich parametrów. Te funkcje zachowują się identycznie inaczej.

Zachowanie porównania i _mbsncmp_mbsncmp_l ma wpływ na ustawienie LC_CTYPE ustawienia kategorii ustawień regionalnych. Umożliwia to wykrywanie bajtów wiodących i końcowych znaków wielobajtowych. W celu uzyskania więcej informacji, zobacz następujący temat: setlocale. Funkcja _mbsncmp używa bieżących ustawień regionalnych dla tego zachowania zależnego od ustawień regionalnych. Funkcja jest identyczna _mbsncmp_l , z tą różnicą, że używa parametru locale . Aby uzyskać więcej informacji, zobacz Ustawienia regionalne. Jeśli ustawienia regionalne są ustawieniami regionalnymi jedno bajtów, zachowanie tych funkcji jest identyczne z strncmp.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Mapowania procedur tekstu ogólnego

TCHAR.H Rutynowych _UNICODE i _MBCS niezdefiniowane _MBCS Zdefiniowane _UNICODE Zdefiniowane
_tcsnccmp strncmp _mbsncmp wcsncmp
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tccmp Mapy do makra lub funkcji wbudowanej _mbsncmp Mapy do makra lub funkcji wbudowanej

Wymagania

Procedura Wymagany nagłówek
strncmp <string.h>
wcsncmp <string.h> lub <wchar.h>
_mbsncmp, _mbsncmp_l <mbstring.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

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

Zobacz też

Manipulowanie ciągami
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
strcmp, wcscmp, _mbscmp
strcoll, funkcje
_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