HOWTO · C

Zeichenketten in C vergleichen

Dieser Artikel stellt vor, wie man Strings in C vergleicht

Auf dieser Seite

Dieser Artikel stellt mehrere Methoden vor, wie man Strings in C vergleichen kann.

Verwendung von die Funktion strcmp zum Vergleichen von Zeichenketten

Die Funktion strcmp ist eine Funktion der Standardbibliothek, die im Header <string.h> definiert ist. Strings im C-Stil sind nur Zeichensequenzen, die durch das Symbol \0 abgeschlossen werden, so dass die Funktion jedes Zeichen mit Iteration vergleichen müsste.

strcmp nimmt zwei Zeichenketten und gibt eine ganze Zahl zurück, die das Ergebnis des Vergleichs darstellt. Die zurückgegebene Zahl ist negativ, wenn die erste Zeichenkette lexikografisch kleiner als die zweite Zeichenkette ist, oder positiv, wenn letztere kleiner als erstere ist, oder 0, wenn die beiden Zeichenketten identisch sind.

Beachten Sie, dass wir im folgenden Beispiel den Rückgabewert der Funktion invertieren und in die ?:-Bedingungsanweisung einfügen, um die entsprechende Ausgabe auf der Konsole auszugeben.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  const char* str1 = "hello there 1";
  const char* str2 = "hello there 2";
  const char* str3 = "Hello there 2";

  !strcmp(str1, str2) ? printf("strings are equal\n")
                      : printf("strings are not equal\n");

  !strcmp(str1, str3) ? printf("strings are equal\n")
                      : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

Ausgabe:

strings are not equal
strings are not equal

Verwenden Sie die Funktion strncmp, um nur bestimmte Teile von Zeichenketten zu vergleichen

strncmp ist eine weitere nützliche Funktion, die im <string.h>-Header definiert ist, und sie kann verwendet werden, um nur bestimmte Zeichen vom Anfang der Strings zu vergleichen.

strncmp nimmt das dritte Argument vom Typ Integer, um die Anzahl der zu vergleichenden Zeichen in beiden Strings anzugeben. Die Rückgabewerte der Funktion sind ähnlich denen, die von strcmp zurückgegeben werden.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  const char* str1 = "hello there 1";
  const char* str2 = "hello there 2";

  !strncmp(str1, str2, 5) ? printf("strings are equal\n")
                          : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

Ausgabe:

strings are equal

Verwenden Sie die Funktionen strcasecmp und strncasecmp, um Zeichenketten ohne Beachtung der Groß- und Kleinschreibung zu vergleichen

Die Funktion strcasecmp verhält sich ähnlich wie die Funktion strcmp mit dem Unterschied, dass sie die Groß- und Kleinschreibung von Buchstaben ignoriert. Diese Funktion ist POSIX-konform und kann auf mehreren Betriebssystemen zusammen mit strncasecmp verwendet werden, die den Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung für eine bestimmte Anzahl von Zeichen in beiden Zeichenketten implementiert. Der letztgenannte Parameter kann mit dem dritten Argument vom Typ size_t an die Funktion übergeben werden.

Beachten Sie, dass die Rückgabewerte dieser Funktionen direkt in bedingten Anweisungen verwendet werden können.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  const char* str1 = "hello there 2";
  const char* str3 = "Hello there 2";

  !strcasecmp(str1, str3) ? printf("strings are equal\n")
                          : printf("strings are not equal\n");

  !strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
                              : printf("strings are not equal\n");

  exit(EXIT_SUCCESS);
}

Ausgabe:

strings are equal
strings are equal