C-Programmierung

String-Vergleich C-Programmierung

String-Vergleich C-Programmierung
Ein String in der Sprache C ist ein Array von Zeichen, das mit einem Nullzeichen (\0) abgeschlossen wird. Mit dieser Eigenschaft werden Strings verglichen.

Zwei Saiten können auf verschiedene Weise verglichen werden. In diesem Tutorial sehen wir zuerst eine benutzerdefinierte Funktion zum Vergleichen zweier Strings und dann einige integrierte Bibliotheksfunktionen, mit denen zwei Strings sehr einfach verglichen werden können string. Also lasst uns anfangen.

Stringvergleich mit einer benutzerdefinierten Funktion:

Wir schreiben eine Funktion stringCompare() Saiten vergleichen. Wir durchlaufen die Strings und vergleichen jedes Zeichen des Strings, bis wir das Ende von einem oder beiden erreichen oder ein nicht übereinstimmendes gefunden wird. Wenn die Traversierung das Ende beider Strings erreicht, werden die Strings abgeglichen; andernfalls stimmen die Zeichenfolgen nicht überein.

01. /*userDefinedFunction.c*/
02.
03. #einschließen
04.
05. int stringCompare( char str1[ ], char str2[ ] )
06.
07. int i=0;
08.
09. während( str1[i] == str2[i] )
10.
11. if( str1[i] == '\0' || str2[i] == '\0' )
12. Unterbrechung;
13. i++;
14.
fünfzehn.
16. if( str1[i] == '\0' && str2[i] == '\0' )
17. 0 zurückgeben;
18. sonst
19. zurück -1;
20.
21.
22.
23.
24. int main()
25.
26. Zeichen str1[30],str2[30];
27.
28. printf("Geben Sie die erste Zeichenfolge ein: ");
29. scanf("%[^\n]%*c",str1);
30. printf("Geben Sie die zweite Zeichenfolge ein: ");
31. scanf("%[^\n]%*c",str2);
32.
33. if(stringCompare(str1,str2) == 0)
34. printf("Die Zeichenketten sind gleich \n");
35. sonst
36. printf("Die Zeichenketten sind nicht gleich \n");
37.
38. 0 zurückgeben; 39.

Hier durchlaufen wir die Strings mit einer while-Schleife und einer Variablen ich. Wenn die Zeichen an derselben Position beider Zeichenfolgen gleich sind, wird der Wert von ich wird um 1 erhöht (Zeile 13). Wenn die Zeichen nicht gleich sind (Zeile 09) oder wir das Ende der Zeichenfolge erreichen (Zeile 11), dann ist die while-Schleife eine Pause. Nach der while-Schleife prüfen wir, ob beide String-Traversalen bis zum Ende erreicht sind oder nicht (Zeile 16). Wenn die Traversierung bis zum Ende beider Strings erreicht ist, dann sind die Strings gleich, sonst nicht.

String-Vergleich mit integrierten Bibliotheksfunktionen:

Die folgenden Bibliotheksfunktionen können für den Stringvergleich verwendet werden. Alle Funktionen sind im . deklariert Schnur.ha Header-Datei.

strcmp()-Funktion:

Diese Funktion vergleicht zwei an die Funktion übergebene Strings.

Syntax:

int strcmp(const char *str1, const char *str2)

Rückgabewert: Gib 0 zurück, wenn die Zeichenfolgen gleich sind. Gibt eine negative ganze Zahl zurück, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings kleiner als der zweite String ist. Gibt eine positive ganze Zahl zurück, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings größer als der zweite String ist. Einige Systeme geben eine Differenz des ASCII-Werts des ersten nicht übereinstimmenden Zeichens zurück und einige Systeme geben -1 zurück, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens der ersten Zeichenfolge kleiner ist als der zweite Zeichenfolge und geben 1 zurück, wenn der ASCII-Wert des ersten nicht übereinstimmenden Zeichens von 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 Strings werden bis zum Zeichen '\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 Strings werden bis zum Zeichen '\0' verglichen.
strcmp( „Hallo Welt“, „Hallo Welt“ ) Negative ganze Zahl ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings ('H') ist kleiner als der zweite String ('h')
strcmp(„Hallo Welt“, „Hallo Welt“ ) Positive ganze Zahl ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings ('h') ist größer als der zweite String ('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 gibt zurück 0 wenn die erste nein Zeichen der beiden Strings sind gleich; Andernfalls wird eine negative oder positive ganze Zahl zurückgegeben, abhängig vom Vorzeichen der Differenzen zwischen dem ASCII-Wert des ersten nicht übereinstimmenden Zeichens.

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' steht nach den ersten 5 Zeichen in beiden Strings. Der Vergleich wird also nach 5 und nicht nach 8 . beendet.
strncmp( „Hallo Welt“, „Hallo Welt“,5 ) Negative ganze Zahl ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings ('H') ist kleiner als der zweite String ('h')

strcasecmp()-Funktion:

Diese Funktion ähnelt der Funktion strcmp(), aber hier werden die Zeichenfolgen nicht zwischen Groß- und Kleinschreibung unterschieden.

Syntax:

int strcasecmp(const char *str1, const char *str2)

Rückgabewert: Gleich wie strcmp(), aber Strings werden behandelt als Groß-/Kleinschreibung beachten.

Beispiel Rückgabewert Erläuterung
strcasecmp( „Hallo Welt“, „Hallo Welt“ ) 0 Zwei Saiten sind gleich.
strcasecmp( „Hallo“, „Hallo\0 Welt“ ) 0 Strings werden bis zum Zeichen '\0' verglichen. Der erste String endet standardmäßig mit '\0' und der zweite String enthält das Zeichen '\0' nach 'Hello'.
strcasecmp( „Hallo Welt“, „Hallo Welt“ ) 0 Saiten sind Groß-/Kleinschreibung beachten. „Hallo Welt“ und „Hallo Welt“ sind also dasselbe.

strncasecmp()-Funktion:

Diese Funktion ähnelt der Funktion strncmp(), aber hier werden die Zeichenfolgen nicht zwischen Groß- und Kleinschreibung unterschieden.

Syntax:

int strncasecmp(const char *str1, const char *str2)

Rückgabewert: Gleich wie strncmp(), wenn Zeichenfolgen mit Groß-/Kleinschreibung 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' steht nach den ersten 5 Zeichen in beiden Strings. Der Vergleich wird also nach 5 und nicht nach 8 . beendet.
strncasecmp( „Hallo Welt“, „Hallo Welt“,5 ) 0 Saiten sind Groß-/Kleinschreibung beachten. „Hallo“ und „Hallo“ sind also dasselbe.

memcmp()-Funktion:

Diese Funktion vergleicht zwei Speicherblöcke byteweise. Wir müssen zwei Zeiger der Speicherblöcke und die Anzahl der zu vergleichenden Bytes übergeben.

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 (nein Byte) sind gleich; Andernfalls werden die Unterschiede zwischen dem ersten nicht übereinstimmenden Bytepaar zurückgegeben (Bytes werden als vorzeichenlose Zeichenobjekte interpretiert und dann zu int hochgestuft).

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 ganze Zahl Die ersten 6 Zeichen sind gleich, aber das 7. Zeichen ist anders. Hier hat der Vergleich nicht aufgehört wie strncmp() beim Erhalten von '\0'-Zeichen.
memcmp( „Hallo Welt“, „Hallo Welt“,11 ) Negative ganze Zahl ASCII-Wert des ersten nicht übereinstimmenden Zeichens des ersten Strings ('H') ist kleiner als der zweite String ('h')

Beispiel:

Im Folgenden finden Sie das C-Codebeispiel aller besprochenen Funktionen functions.

01. /*stringVergleichen.c*/
02.
03. #einschließen
04. #einschließen
05.
06. int main()
07.
08. printf("strcmp( "Hallo Welt","Hallo Welt" ) => %d\n",strcmp( "Hallo Welt","Hallo Welt" ));
09. printf("strcmp( "Hallo","Hallo\\0 Welt" ) => %d\n",strcmp( "Hallo","Hallo\0 Welt" ));
10. printf("strcmp( "Hallo Welt","Hallo Welt" ) => %d\n",strcmp( "Hallo Welt","Hallo Welt" ) );
11. printf("strcmp( "Hallo\\0\\0\\0","Hallo\\0 Welt" ) => %d\n",strcmp( "Hallo\0\0\0","Hallo\0 Welt" ));
12.
13. printf("\n--------------\n");
14.
fünfzehn. printf("strncmp( "Hallo Welt","Hallo Welt",5 ) => %d\n",strncmp( "Hallo Welt","Hallo Welt",5 ));
16. printf("strncmp( "Hallo","Hallo\\0 Welt",5 ) => %d\n",strncmp( "Hallo","Hallo\0 Welt",5 ));
17. printf("strncmp( "Hallo\\0\\0\\0","Hallo\\0 Welt",8 ) => %d\n",strncmp( "Hallo\0\0\0","Hallo \0 Welt",8 ));
18. printf("strncmp( "Hallo Welt","Hallo Welt",5 ) => %d\n",strncmp( "Hallo Welt","Hallo Welt",5 ));
19.
20. printf("\n--------------\n");
21.
22. printf("strcasecmp( "Hello World","Hello World" ) => %d\n",strcasecmp( "Hello World","Hello World" ));
23. printf("strcasecmp( "Hallo","Hallo\\0 Welt" ) => %d\n",strcasecmp( "Hallo","Hallo\0 Welt" ));
24. printf("strcasecmp( "Hallo Welt","Hallo Welt" ) => %d\n",strcasecmp( "Hallo Welt","Hallo Welt" ));
25.
26. printf("\n--------------\n");
27.
28. printf("strncasecmp( "Hallo Welt","Hallo Welt",5 ) => %d\n",strncasecmp( "Hallo Welt","Hallo Welt",5 ) );
29. printf("strncasecmp( "Hallo","Hallo\\0 Welt",5 ) => %d\n",strncasecmp( "Hallo","Hallo\0 Welt",5 ));
30. printf("strncasecmp( "Hallo\\0\\0\\0","Hallo\\0 Welt",8 ) => %d\n",strncasecmp( "Hallo\0\0\0","Hallo \0 Welt",8 ));
31. printf("strncasecmp( "Hallo Welt","Hallo Welt",5 ) => %d\n",strncasecmp( "Hallo Welt","Hallo Welt",5 ));
32.
33. printf("\n--------------\n");
34.
35. printf("memcmp( "Hallo Welt","Hallo Welt",5 ) => %d\n",memcmp( "Hallo Welt","Hallo Welt",5 ) );
36. printf("memcmp( "Hallo\\0\\0\\0","Hallo\\0 Welt",8 ) => %d\n",memcmp( "Hallo\0\0\0","Hallo \0 Welt",8 ));
37. printf("memcmp( "Hallo Welt","Hallo Welt",11) => %d\n",memcmp( "Hallo Welt","Hallo Welt",11));
38.
39. 0 zurückgeben; 40.

Fazit:

In diesem Tutorial haben wir also gesehen, wie Strings auf verschiedene Weise verglichen werden können. Wie wir gesehen haben, gibt die Funktion stringCompare() -1 für ungleiche Strings zurück, aber dies kann so geändert werden, dass sie den ASCII-Wert eines nicht übereinstimmenden Zeichens zurückgibt. Sie können es in Ihrem Code verwenden, der für Sie am besten geeignet ist.

Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...
So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...