strcmp, wcscmp, _mbscmp

Vergleichen Sie Zeichenfolgen.

Wichtiger HinweisWichtig

_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)

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