Udostępnij za pośrednictwem


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Porównanie znaków dwóch ciągów i przy użyciu bieżących ustawień regionalnych lub określone ustawienia regionalne.

Ważna uwagaWażne

_mbsncmpi _mbsncmp_l nie można używać w aplikacji, których wykonywanie w czasie wykonywania systemu Windows.Aby uzyskać więcej informacji, zobacz CRT funkcje nie obsługiwane przez /ZW.

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 znaków do porównania.

  • count
    Liczba znaków do porównania.

  • locale
    Ustawienia regionalne używane.

Wartość zwracana

Wartość zwracana określa relację podciągów z string1 i string2 się następujące zmiany.

Zwracana wartość

Opis

< 0

string1podciąg mniej niż string2 podciągu

0

string1podciąg identyczne z string2 podciągu

> 0

string1podciąg większa niż string2 podciągu

Na błąd _mbsncmp zwraca _NLSCMPERROR, który jest zdefiniowany w ciągu.H i MBSTRING.H.

Uwagi

strncmp Funkcja leksykograficznym porównuje, co najwyżej pierwszy count znaków w string1 i string2 i zwraca wartość określającą relację między podciągów.strncmpjest ona rozróżniana wielkość liter do _strnicmp.wcsncmp and _mbsncmp are case-sensitive versions of _wcsnicmp and _mbsnicmp.

wcsncmpi _mbsncmp szerokich znaków i znaków wielobajtowych wersje strncmp.Argumenty i wartości zwracanej przez wcsncmp są ciągami szerokich znaków; tych z _mbsncmp są ciągami znaków wielobajtowych._mbsncmprozpoznaje sekwencje znaków wielobajtowych, zgodnie z strona kodowa wielobajtowych i zwraca _NLSCMPERROR na błąd.

Ponadto _mbsncmp sprawdza poprawność jego parametry.Jeśli string1 lub string2 jest pusty wskaźnik,obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, _mbsncmp zwraca _NLSCMPERROR i ustawia errno do EINVAL.strncmpi wcsncmp nie są zgodne z nimi parametrów.Zmienia tych trzech funkcji zachowanie takich samych nazwach.

Wartość produkcji jest zależny od ustawienia z LC_CTYPE kategorii ustawienie regionalne tzn. zobacz setlocale Aby uzyskać więcej informacji.Wersje te funkcje, bez _l sufiks Użyj bieżących ustawień regionalnych tego zachowania zależne od ustawień lokalnych; wersje z _l sufiks są identyczne z tym, że używają zamiast przekazany parametr ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

Mapy i makro lub wewnętrznej funkcji

_mbsncmp

Mapy i makro lub wewnętrznej funkcji

n/d

n/d

_mbsncmp_l

n/d

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strncmp

<string.h>

wcsncmp

<string.h> lub <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

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 );
}
  

Odpowiednik w programie .NET Framework

System::String::COMPARE

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Ustawienia regionalne

Interpretacja sekwencje znaków wielobajtowych

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

Funkcje strcoll

_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