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. 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
_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 ("" > "abcdeabcd^") 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.

Bibliotheken

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

Zeichenfolgenmanipulation
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