Freigeben über


_mbsnbcmp, _mbsnbcmp_l

Vergleicht die ersten n Bytes von zwei Multibyte-Zeichenzeichenfolgen.

Wichtig

Diese API kann 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 _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count
);
int _mbsnbcmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count,
   _locale_t locale
);

Parameter

string1, string2
Die zu vergleichende Zeichenfolgen.

count
Die Anzahl der zu kopierenden Bytes.

locale
Das zu verwendende Gebietsschema.

Rückgabewert

Der Rückgabewert gibt die ordinale Beziehung der untergeordneten Zeichenfolgen von string1 und string2 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 _mbsnbcmp und _mbsnbcmp_l Rückgabefehler _NLSCMPERROR, der in <string.h> und <mbstring.h> definiert ist.

Hinweise

Die _mbsnbcmp-Funktionen vergleichen höchstens die ersten count Bytes in string1 und string2 und geben einen Wert zurück, der die Beziehung zwischen den untergeordneten Zeichenfolgen angibt. _mbsnbcmp ist eine Version von _mbsnbicmp, bei der die Groß-/Kleinschreibung zu beachten ist. _mbsnbcmp Im Gegensatz dazu _mbsnbcollwird die Sortierreihenfolge des Gebietsschemas nicht beeinflusst. _mbsnbcmp erkennt Multibytezeichenfolgen gemäß der aktuellen Multibyte-Codepage.

_mbsnbcmp ähnelt _mbsncmp, mit der Ausnahme, dass _mbsncmp Zeichenfolgen nach Zeichen und nicht nach Bytes vergleicht.

Der Ausgabewert wird von der LC_CTYPE-Kategorieeinstellung des Gebietsschemas beeinflusst, die die vorangestellten und nachstehenden Bytes von Multibytezeichen angibt. Weitere Informationen finden Sie unter setlocale. Die _mbsnbcmp-Funktion verwendet das aktuelle Gebietsschema für dieses gebietsschemaabhängige Verhalten. Die _mbsnbcmp_l-Funktion ist identisch, abgesehen davon, dass sie stattdessen den locale-Parameter verwendet. Weitere Informationen finden Sie unter Locale.

Wenn es sich um string1 string2 einen Nullzeiger handelt, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, werden die Funktionen zurückgegeben _NLSCMPERRORund errno auf .EINVAL

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Mapping generischer Textroutinen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tcsncmp strncmp _mbsnbcmp wcsncmp
_tcsncmp_l strncmp _mbsnbcml wcsncmp

Anforderungen

Routine Erforderlicher Header
_mbsnbcmp <mbstring.h>
_mbsnbcmp_l <mbstring.h>

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

Beispiel

// crt_mbsnbcmp.c
#include <mbstring.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", string1 );
   printf( "          %s\n\n", string2 );
   printf( "Function: _mbsnbcmp (first 10 characters only)\n" );
   result = _mbsncmp( string1, string2 , 10 );
   if( result > 0 )
      _mbscpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      _mbscpy_s( tmp, sizeof(tmp), "less than" );
   else
      _mbscpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:   String 1 is %s string 2\n\n", tmp );
   printf( "Function: _mbsnicmp _mbsnicmp (first 10 characters only)\n" );
   result = _mbsnicmp( string1, string2, 10 );
   if( result > 0 )
      _mbscpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      _mbscpy_s( tmp, sizeof(tmp), "less than" );
   else
      _mbscpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:   String 1 is %s string 2\n\n", tmp );
}

Output

Compare strings:
          The quick brown dog jumps over the lazy fox
          The QUICK brown fox jumps over the lazy dog

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

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

Siehe auch

Zeichenfolgenbearbeitung
_mbsnbcat, _mbsnbcat_l
_mbsnbicmp, _mbsnbicmp_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
_strnicmp, , _wcsnicmp_mbsnicmp, _strnicmp_l, , _wcsnicmp_l_mbsnicmp_l
Gebietsschema
Interpretation von Multibytezeichensequenzen