strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Vergleicht die angegebene Anzahl von Zeichen zweier Zeichenfolgen.

Wichtig

_mbsncmp und _mbsncmp_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

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

Parameter

string1, string2
Zu vergleichende Zeichenfolgen.

count
Anzahl der zu vergleichenden Zeichen.

locale
Zu verwendendes Gebietsschema.

Rückgabewert

Der Rückgabewert zeigt der Beziehung der untergeordneten Zeichenfolgen von string1 und string2 wie folgt an.

Rückgabewert Beschreibung
< 0 Die untergeordnete Zeichenfolge string1 ist kleiner als die untergeordnete Zeichenfolge string2.
0 Die untergeordnete Zeichenfolge string1 ist mit der untergeordneten Zeichenfolge string2 identisch.
> 0 Die untergeordnete Zeichenfolge string1 ist größer als die untergeordnete Zeichenfolge string2.

Bei einem Parameterüberprüfungsfehler und _mbsncmp_l Rückgabefehler_NLSCMPERROR, _mbsncmp der in <string.h> und .<mbstring.h>

Hinweise

Die strncmp-Funktion führt einen Ordinalvergleich der (höchstens) ersten count-Zeichen in string1 und string2 und gibt einen Wert zurück, der die Beziehung zwischen den untergeordneten Zeichenfolgen angibt. strncmp ist eine Version von _strnicmp, bei der die Groß-/Kleinschreibung zu beachten ist. wcsncmpund _mbsncmp sind Versionen von _wcsnicmp und _mbsnicmp, bei denen ebenfalls die Groß-/Kleinschreibung zu beachten ist.

wcsncmp und _mbsncmp sind Breitzeichen- und Multibytezeichenversionen von strncmp. Bei den Argumenten handelt es wcsncmp sich um Zeichenfolgen mit breitem Zeichen. Die Argumente sind _mbsncmp Multibyte-Zeichenfolgen. _mbsncmp erkennt Multibyte-Zeichenfolge entsprechend einer Multibyte-Codepage und gibt im Falle eines Fehlers _NLSCMPERROR zurück.

Darüber hinaus überprüfen _mbsncmp_mbsncmp_l auch Parameter. Wenn string1 oder string2 ein Nullzeiger ist und count nicht gleich 0 ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben _mbsncmp und _mbsncmp_l den Wert _NLSCMPERROR zurück und setzen errno auf EINVAL. strncmp und wcsncmp überprüfen Sie ihre Parameter nicht. Anderenfalls verhalten sich diese Funktionen identisch.

Das Vergleichsverhalten von _mbsncmp und _mbsncmp_l wird durch die Einstellung der LC_CTYPE-Kategorieeinstellung des Gebietsschemas beeinflusst. Hierdurch wird die Erkennung von vorangestellten und nachfolgenden Bytes von Multibytezeichen gesteuert. Weitere Informationen finden Sie unter setlocale. Die _mbsncmp-Funktion verwendet das aktuelle Gebietsschema für dieses gebietsschemaabhängige Verhalten. Die _mbsncmp_l-Funktion ist identisch, abgesehen davon, dass sie stattdessen den locale-Parameter verwendet. Weitere Informationen finden Sie unter Locale. Wenn das Gebietsschema ein Einzelbyte-Gebietsschema ist, ist das Verhalten dieser Funktionen identisch mit strncmp.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tcsnccmp strncmp _mbsncmp wcsncmp
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tccmp Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus _mbsncmp Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus

Anforderungen

Routine Erforderlicher Header
strncmp <string.h>
wcsncmp <string.h> oder <wchar.h>
_mbsncmp, _mbsncmp_l <mbstring.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Zeichenfolgenmanipulation
Gebietsschema
Interpretation von Multibyte-Zeichensequenzen
_mbsnbcmp, _mbsnbcmp_l
_mbsnbicmp, _mbsnbicmp_l
strcmp, wcscmp, _mbscmp
strcoll-Funktionen
_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