_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 _mbsnbcoll
wird 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 _NLSCMPERROR
und 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