Zwei Saiten können auf verschiedene Arten verglichen werden. In diesem Tutorial sehen wir zuerst eine benutzerdefinierte Funktion, um zwei Zeichenfolgen zu vergleichen, und dann werden wir einige integrierte Bibliotheksfunktionen sehen, mit denen zwei Zeichenfolgen sehr einfach verglichen werden können. Also lasst uns anfangen.
String-Vergleich mit einer benutzerdefinierten Funktion:
Wir werden eine Funktion schreiben StringCompare () Saiten vergleichen. Wir durchqueren die Saiten und vergleichen jeden Zeichen der Schnur. Wenn der Traversal bis zum Ende der beiden Saiten erreicht ist, werden die Saiten abgestimmt; Ansonsten sind Saiten nicht übereinstimmend.
01. /*Benutzerdefinierte Funktion.C*/Hier durchqueren wir die Saiten mit der Schleife und einer Variablen ich. Wenn Zeichen in der gleichen Position beider Zeichenfolgen gleich sind, der Wert von ich wird durch 1 erhöht (Zeile 13). Wenn die Zeichen nicht gleich sind (Zeile 09) oder wir das Ende der Zeichenfolge (Zeile 11) erreichen, ist die WHOL -Schleife eine Pause. Nach der while -Schleife überprüfen wir beide Saitenquellen, die bis zum Ende erreicht sind oder nicht (Zeile 16). Wenn der Traversal bis zum Ende beider Saiten erreicht ist, sind die Saiten sonst nicht gleich.
String-Vergleich mit integrierten Bibliotheksfunktionen:
Die folgenden Bibliotheksfunktionen können zum String -Vergleich verwendet werden. Alle Funktionen werden in der deklariert Saite.H Header-Datei.
Strcmp () Funktion:
Diese Funktion vergleicht zwei an die Funktion übergebene Zeichenfolgen.
Syntax:
int strcmp (const char *str1, const char *str2)Rückgabewert: Geben Sie 0 zurück, wenn die Saiten gleich sind. Geben Sie eine negative Ganzzahl zurück, wenn der ASCII -Wert des ersten unerreichten Zeichens der ersten Zeichenfolge geringer ist als die zweite Zeichenfolge. Geben Sie eine positive Ganzzahl zurück, wenn der ASCII -Wert des ersten unerreichten Zeichens der ersten Zeichenfolge größer ist als die zweite Zeichenfolge. Einige Systeme Return -Differenz des ASCII -Wertes des ersten nicht übereinstimmenden Charakters und einige Systeme geben -1 zurück, wenn der ASCII Die erste Zeichenfolge ist größer als die zweite Zeichenfolge.
Beispiel | Rückgabewert | Erläuterung |
STRCMP ( "Hallo Welt", "Hallo Welt" ) | 0 | Zwei Saiten sind gleich. |
STRCMP ( "Hallo", "Hallo \ 0 Welt" ) | 0 | Saiten werden bis zum Charakter '\ 0' verglichen. Die erste Zeichenfolge endet standardmäßig mit '\ 0', und die zweite Zeichenfolge enthält das Zeichen '\ 0' nach 'Hallo' '. |
STRCMP ( "Hallo \ 0 \ 0 \ 0", "Hallo \ 0 Welt" ) | 0 | Saiten werden bis zum Charakter '\ 0' verglichen. |
STRCMP ( "Hallo Welt", "Hallo Welt" ) | Negative Ganzzahl | Der ASCII -Wert des ersten unerreichten Zeichens der ersten String ('H') ist geringer als die zweite Zeichenfolge ('H') |
STRCMP ("Hallo Welt", "Hallo Welt" ) | Positive ganze Zahl | Der ASCII -Wert des ersten unerreichten Zeichens der ersten Zeichenfolge ('H') ist größer als die zweite Zeichenfolge ('H') |
strncmp () Funktion:
Diese Funktion ähnelt der Funktion STRCMP (), Aber hier müssen wir angeben, wie viele Bytes verglichen werden, indem wir ein zusätzliches Argument an die Funktion übergeben.
Syntax:
int strncmp (const char *str1, const char *str2, size_t n)Rückgabewert: Die Funktion kehrt zurück 0 Wenn der erste N Charaktere der beiden Saiten sind gleich; Andernfalls gibt es je nach Anzeichen der Unterschiede zwischen dem ASCII -Wert des ersten nicht übereinstimmenden Charakters eine negative oder positive Ganzzahl zurück.
Beispiel | Rückgabewert | Erläuterung |
STRNCMP ( "Hallo Welt", "Hallo Welt", 5 ) | 0 | Die ersten 5 Zeichen sind gleich. |
STRNCMP ( "Hallo", "Hallo \ 0 Welt", 5 ) | 0 | Die ersten 5 Zeichen sind gleich. |
STRNCMP ( "Hallo \ 0 \ 0 \ 0", "Hallo \ 0 Welt", 8 ) | 0 | '\ 0' ist nach den ersten 5 Zeichen in beiden Saiten nach. Der Vergleich wird also nach 5 nicht 8 gestoppt. |
STRNCMP ( "Hallo Welt", "Hallo Welt", 5 ) | Negative Ganzzahl | Der ASCII -Wert des ersten unerreichten Zeichens der ersten String ('H') ist geringer als die zweite Zeichenfolge ('H') |
Strcasecmp () Funktion:
Diese Funktion ähnelt der Funktion STRCMP (), Aber hier sind die Saiten nicht sensibel.
Syntax:
int strcasecmp (const char *str1, const char *str2)Rückgabewert: Gleich wie STRCMP (), aber Saiten werden als behandelt Fall in empfindlich.
Beispiel | Rückgabewert | Erläuterung |
Strcasecmp ( "Hallo Welt", "Hallo Welt" ) | 0 | Zwei Saiten sind gleich. |
Strcasecmp ( "Hallo", "Hallo \ 0 Welt" ) | 0 | Saiten werden bis zum Charakter '\ 0' verglichen. Die erste Zeichenfolge endet standardmäßig mit '\ 0', und die zweite Zeichenfolge enthält das Zeichen '\ 0' nach 'Hallo' '. |
Strcasecmp ( "Hallo Welt", "Hallo Welt" ) | 0 | Saiten sind Fall in empfindlich. Also, "Hallo Welt" und "Hallo Welt" sind gleich. |
strncasecmp () Funktion:
Diese Funktion ähnelt der Funktion strncmp (), Aber hier sind die Saiten nicht sensibel.
Syntax:
int strncasecmp (const char *str1, const char *str2)Rückgabewert: Gleich wie strncmp (), Wenn Saiten als Fall inempfindlich behandelt werden.
Beispiel | Rückgabewert | Erläuterung |
strncasecmp ( "Hallo Welt", "Hallo Welt", 5 ) | 0 | Die ersten 5 Zeichen sind gleich. |
strncasecmp ( "Hallo", "Hallo \ 0 Welt", 5 ) | 0 | Die ersten 5 Zeichen sind gleich. |
strncasecmp ( "Hallo \ 0 \ 0 \ 0", "Hallo \ 0 Welt", 8 ) | 0 | '\ 0' ist nach den ersten 5 Zeichen in beiden Saiten nach. Der Vergleich wird also nach 5 nicht 8 gestoppt. |
strncasecmp ( "Hallo Welt", "Hallo Welt", 5 ) | 0 | Saiten sind Fall in empfindlich. Also, "Hallo" und "Hallo" sind gleich. |
memcmp () Funktion:
Diese Funktion vergleicht zwei Speicherblöcke Byte nach Byte. Wir müssen zwei Zeiger der Speicherblöcke und der Anzahl der Bytes übergeben, um sie zu vergleichen.
Syntax:
int memcmp (const void *str1, const void *str2, size_t n)Rückgabewert: Die Funktion gibt 0 zurück, wenn die beiden Speicherblöcke (N Bytes) sind gleich; Andernfalls gibt es die Unterschiede zwischen dem ersten nicht übereinstimmenden Bytpaar zurück (Bytes werden als nicht signierte Zeichenobjekte interpretiert und dann zu int befördert).
Beispiel | Rückgabewert | Erläuterung |
memcmp ( "Hallo Welt", "Hallo Welt", 5 ) | 0 | Die ersten 5 Zeichen sind gleich. |
memcmp ( "Hallo \ 0 \ 0 \ 0", "Hallo \ 0 Welt", 8 ) | Negative Ganzzahl | Die ersten 6 Zeichen sind gleich, aber der 7. Charakter ist anders. Hier wird der Vergleich nicht aufgehört wie strncmp () Wenn Sie '\ 0' Charakter bekommen. |
memcmp ( "Hallo Welt", "Hallo Welt", 11 ) | Negative Ganzzahl | Der ASCII -Wert des ersten unerreichten Zeichens der ersten String ('H') ist geringer als die zweite Zeichenfolge ('H') |
Beispiel:
Im Folgenden finden Sie das C -Code -Beispiel für alle besprochenen Funktionen.
01. /*StringCompare.C*/Abschluss:
In diesem Tutorial haben wir also gesehen, wie Saiten auf verschiedene Weise verglichen werden können. Wie wir gesehen haben, gibt die Funktion StringCompare () -Funktion -1 für ungleiche Zeichenfolgen zurück, dies kann jedoch so geändert werden. Sie können es in Ihrem Code verwenden, was für Sie am besten geeignet ist.