strncmp
, , wcsncmp
, , _mbsncmp
_mbsncmp_l
Porównuje się z określoną liczbą znaków dwóch ciągów.
Ważne
_mbsncmp
nie 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 string1
string2
zwraca wartość wskazującą relację między podciągami. strncmp
jest wersją z uwzględnieniem wielkości liter ._strnicmp
wcsncmp
i _mbsncmp
to wersje z uwzględnieniem wielkości liter i _wcsnicmp
_mbsnicmp
.
wcsncmp
i _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. Aby uzyskać więcej informacji, zobacz 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 rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcsnccmp |
strncmp |
_mbsncmp |
wcsncmp |
_tcsncmp |
strncmp |
_mbsnbcmp |
wcsncmp |
_tccmp |
Mapuje na makro lub funkcję śródliniową | _mbsncmp |
Mapuje na makro lub funkcję śródliniową |
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