Zeichenketten in C vergleichen
-
Verwendung von die Funktion
strcmp
zum Vergleichen von Zeichenketten -
Verwenden Sie die Funktion
strncmp
, um nur bestimmte Teile von Zeichenketten zu vergleichen -
Verwenden Sie die Funktionen
strcasecmp
undstrncasecmp
, um Zeichenketten ohne Beachtung der Groß- und Kleinschreibung zu vergleichen
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
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook