strcmp
, , wcscmp
_mbscmp
_mbscmp_l
Vergleichen von Zeichenfolgen.
Wichtig
_mbscmp
und _mbscmp_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 strcmp(
const char *string1,
const char *string2
);
int wcscmp(
const wchar_t *string1,
const wchar_t *string2
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
int _mbscmp_l(
const unsigned char *string1,
const unsigned char *string2,
_locale_t locale
);
Parameter
string1
, string2
Zu vergleichende mit NULL endende Zeichenfolgen.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
Der Rückgabewert für jede dieser Funktionen gibt die Ordinalbeziehung von string1
zu string2
an.
Wert | Beziehung von string1 zu string2 |
---|---|
< 0 | string1 ist kleiner als string2 |
0 | string1 ist identisch mit string2 |
> 0 | string1 ist größer als string2 . |
Bei einem Parameterüberprüfungsfehler und _mbscmp_l
Rückgabefehler_NLSCMPERROR
, _mbscmp
der in <string.h>
und .<mbstring.h>
Hinweise
Die strcmp
-Funktion führt einen Ordinalvergleich von string1
und string2
durch und gibt einen Wert, der die Beziehung angibt. wcscmp
und _mbscmp
sind Breitzeichen- bzw. Multibytezeichenversionen von strcmp
. _mbscmp
erkennt Multibyte-Zeichenfolgen entsprechend der aktuellen Multibyte-Codepage und gibt bei einem Fehler _NLSCMPERROR
zurück. _mbscmp_l
hat das gleiche Verhalten, verwendet jedoch den Gebietsschemaparameter, der anstelle des aktuellen Gebietsschemas übergeben wird. Weitere Informationen finden Sie unter Codeseiten. string1
Wenn oder string2
ein Nullzeiger ist, _mbscmp
wird auch der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben _mbscmp
und _mbscmp_l
den Wert _NLSCMPERROR
zurück und setzen errno
auf EINVAL
. strcmp
und wcscmp
überprüfen Sie ihre Parameter nicht. Anderenfalls verhalten sich diese Funktionen identisch.
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 |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Die strcmp
Funktionen unterscheiden sich von den strcoll
Funktionen, in denen strcmp
Vergleiche ordinal sind und nicht vom Gebietsschema betroffen sind. strcoll
vergleicht Zeichenfolgen lexikografisch mithilfe der LC_COLLATE
-Kategorie des aktuellen Gebietsschemas. Weitere Informationen zur LC_COLLATE
Kategorie finden Sie unter setlocale
, _wsetlocale
.
Im Gebietsschema "C" ist die Reihenfolge der Zeichen im Zeichensatz (ASCII-Zeichensatz) die gleiche wie die lexikografische Zeichenreihenfolge. In anderen Gebietsschemata kann die Reihenfolge der Zeichen im Zeichensatz jedoch von der lexikografischen Reihenfolge abweichen. Beispielsweise kommt das Zeichen "a
" (Wert 0x61) in bestimmten europäischen Gebietsschemas vor das Zeichen "ä
" (Wert 0xE4) im Zeichensatz, aber das Zeichen "ä
" steht vor dem Zeichen "a
" lexikalisch.
In Gebietsschemas, für die der Zeichensatz und die lexikografische Zeichenreihenfolge unterschiedlich sind, können Sie strcoll
anstelle von strcmp
für den lexikografischen Vergleich von Zeichenfolgen verwenden. Sie können auch strxfrm
für die ursprünglichen Zeichenfolgen verwenden und dann strcmp
für die resultierenden Zeichenfolgen verwenden.
Bei den strcmp
-Funktionen wird die Groß-/Kleinschreibung beachtet. _stricmp
, _wcsicmp
und _mbsicmp
vergleichen Zeichenfolgen, indem sie sie zuerst in Kleinbuchstaben konvertieren. Zwei Zeichenfolgen, die Zeichen enthalten, die sich zwischen "Z" und "a" in der ASCII-Tabelle ('[
, '', ']
\\
', '^
', '_
' und '`
') befinden, werden je nach Fall unterschiedlich verglichen. Beispielsweise vergleichen die beiden Zeichenfolgen "ABCDE
" und "ABCD^
" eine Möglichkeit, wenn der Vergleich Kleinbuchstaben ("" > "abcde
abcd^
") und die andere Methode ("ABCDE
" < "ABCD
^") ist, wenn der Vergleich Großbuchstaben ist.
Anforderungen
Routine | Erforderlicher Header |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> oder <wchar.h> |
_mbscmp |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Libraries
Alle Versionen der C-Laufzeitbibliotheken.
Beispiel
// crt_strcmp.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
int main( void )
{
char tmp[20];
int result;
// Case sensitive
printf( "Compare strings:\n %s\n %s\n\n", string1, string2 );
result = strcmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof(tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " strcmp: String 1 is %s string 2\n", tmp );
// Case insensitive (could use equivalent _stricmp)
result = _stricmp( string1, string2 );
if( result > 0 )
strcpy_s( tmp, _countof (tmp), "greater than" );
else if( result < 0 )
strcpy_s( tmp, _countof (tmp), "less than" );
else
strcpy_s( tmp, _countof (tmp), "equal to" );
printf( " _stricmp: String 1 is %s string 2\n", tmp );
}
Compare strings:
The quick brown dog jumps over the lazy fox
The QUICK brown dog jumps over the lazy fox
strcmp: String 1 is greater than string 2
_stricmp: String 1 is equal to string 2
Siehe auch
Zeichenfolgenbearbeitung
memcmp
, wmemcmp
_memicmp
, _memicmp_l
strcoll
-Funktionen
_stricmp
, , _wcsicmp
_mbsicmp
, _stricmp_l
, , _wcsicmp_l
_mbsicmp_l
strncmp
, , wcsncmp
_mbsncmp
_mbsncmp_l
_strnicmp
, , _wcsnicmp
_mbsnicmp
, _strnicmp_l
, , _wcsnicmp_l
_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
_mbsrchr_l
strspn
, , wcsspn
_mbsspn
_mbsspn_l
strxfrm
, , wcsxfrm
_strxfrm_l
_wcsxfrm_l