strcmp, wcscmp, _mbscmp
Vergleichen Sie Zeichenfolgen.
Wichtig |
---|
_mbscmp kann nicht in den Anwendungen verwendet werden, die in Windows-Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /ZW. |
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 );
Parameter
- string1, string2
Auf NULL endende Zeichenfolgen zu vergleichen.
Rückgabewert
Der Rückgabewert für jede dieser Funktionen gibt die lexikografische Beziehung aus string1 zu string2 an.
Wert |
Verhältnis von string1 zu Zeichenfolge2 |
---|---|
< 0 |
string1 ist kleiner als string2 |
0 |
string1 ist mit identisch string2 |
> 0 |
string1 ist größer als string2. |
Auf einem Fehler gibt _mbscmp_NLSCMPERROR zurück, der in STRING.H und in MBSTRING.H. definiert ist.
Hinweise
Die strcmp-Funktion vergleicht string1 und string2 lexikografisch und gibt einen Wert zurück, der die Beziehung angibt.wcscmp und _mbscmp sind, bzw., Breitzeichen und Mehrbytezeichen-Versionen von strcmp._mbscmp erkennt Mehrbytezeichensequenzen entsprechend der aktuellen Mehrbyte-Codepage und gibt _NLSCMPERROR auf einem Fehler zurück.Weitere Informationen finden Sie unter Codepages.Wenn string1 oder string2 ein NULL-Zeiger ist, ruft _mbscmp den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, gibt _mbscmp_NLSCMPERROR zurück und legt errno zu EINVAL fest.strcmp und wcscmp überprüfen nicht ihre Parameter.Diese drei Funktionen verhalten sich andernfalls identisch.
Zuordnung generische Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert. |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcscmp |
strcmp |
_mbscmp |
wcscmp |
Die strcmp-Funktionen unterscheiden sich von den strcoll-Funktionen darin, dass strcmp Vergleiche nicht von Gebietsschema betroffen sind, während die Art der strcoll Vergleichen durch die LC_COLLATE Kategorie des aktuellen Gebietsschemas bestimmt wird.Weitere Informationen über die LC_COLLATE Kategorie, finden Sie unter setlocale, _wsetlocale.
Im "C " - Gebietsschema ist die Reihenfolge der Zeichen im Zeichensatz ASCII-Zeichensatz () mit der lexikografische Reihenfolge.In anderen Gebietsschemas, kann die Reihenfolge der Zeichen im Zeichensatz sich von der lexikografischen Reihenfolge.Beispielsweise in bestimmten europäischen Gebietsschemas, wechselt das Zeichen "a" (Wert 0x61) dem Zeichen "ä" (Wert 0xE4) im Zeichensatz, dem Zeichen "ä" vor dem Zeichen "a" lexikografisch voran.
In den Gebietsschemas, für die der Zeichensatz und die lexikografische Reihenfolge unterscheiden, verwenden Sie strcoll statt strcmp für lexikografischen Vergleich von Zeichenfolgen entsprechend der LC_COLLATE Kategorieneinstellung des aktuellen Gebietsschemas.Um einen lexikografischen Vergleich des Gebietsschemas im obigen Beispiel auszuführen, verwenden Sie strcoll statt strcmp.Alternativ können Sie strxfrm auf den ursprünglichen Zeichenfolgen verwenden, verwenden strcmp auf den Ergebniszeichenfolgen.
_stricmp, _wcsicmp und _mbsicmp Zeichenfolgen vergleichen, indem zuerst sie auf ihre kleingeschriebenen Formularen konvertieren.Zwei Zeichenfolgen, die Zeichen enthalten, die zwischen "Z" und "a" in der ASCII-Tabelle befinden ("[", '\', "]", '^', '_'und '`') vergleichen anders, abhängig von ihrem Fall.Beispielsweise vergleichen die beiden Zeichenfolgen "ABCDE" und "ABCD^" eine Möglichkeit, wenn der Vergleich Kleinbuchstaben ("abcde" > "abcd^") und die andere Methode ("ABCDE" < "ABCD^") wird der Vergleich ein Großbuchstabe ist.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
strcmp |
<string.h> |
wcscmp |
<string.h> oder <wchar.h> |
_mbscmp |
<mbstring.h> |
So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität.
Bibliotheken
Alle Versionen 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 );
}
.NET Framework-Entsprechung
System::String::CompareOrdinal
Siehe auch
Referenz
Zeichenfolgenbearbeitung (CRT)
_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