Zeichenfolgen in C (mit Beispielen)

In diesem Tutorial lernen Sie Strings in der C-Programmierung kennen. Sie lernen, sie zu deklarieren, zu initialisieren und anhand von Beispielen für verschiedene E / A-Vorgänge zu verwenden.

Bei der C-Programmierung ist eine Zeichenfolge eine Folge von Zeichen, die mit einem Nullzeichen abgeschlossen werden . Beispielsweise:

 char c() = "c string"; 

Wenn der Compiler auf eine in doppelte Anführungszeichen eingeschlossene Zeichenfolge stößt, wird am Ende standardmäßig ein Nullzeichen angehängt .

Wie deklariere ich einen String?

So können Sie Zeichenfolgen deklarieren:

 char s(5); 

Hier haben wir eine Zeichenfolge mit 5 Zeichen deklariert.

Wie initialisiere ich Strings?

Sie können Zeichenfolgen auf verschiedene Arten initialisieren.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Nehmen wir ein anderes Beispiel:

 char c(5) = "abcde";

Hier versuchen wir '', einem charArray mit 5 Zeichen 6 Zeichen zuzuweisen (das letzte Zeichen ist ) . Das ist schlecht und du solltest das niemals tun.

Zeichenfolgen Werte zuweisen

Arrays und Strings sind Bürger zweiter Klasse in C; Sie unterstützen den Zuweisungsoperator nicht mehr, sobald er deklariert ist. Beispielsweise,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Hinweis: Verwenden Sie stattdessen die Funktion strcpy (), um die Zeichenfolge zu kopieren.

Lesen Sie den String vom Benutzer

Mit der scanf()Funktion können Sie eine Zeichenfolge lesen.

Die scanf()Funktion liest die Zeichenfolge, bis sie auf Leerzeichen (Leerzeichen, Zeilenumbruch, Tabulator usw.) stößt.

Beispiel 1: scanf () zum Lesen einer Zeichenfolge

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Ausgabe

 Name eingeben: Dennis Ritchie Sie heißen Dennis.

Obwohl Dennis Ritchie im obigen Programm eingegeben wurde, wurde nur "Dennis" in der Namenszeichenfolge gespeichert. Es ist, weil es nach Dennis ein Leerzeichen gab.

Wie lese ich eine Textzeile?

Mit der fgets()Funktion können Sie eine Zeichenfolge lesen. Und Sie können verwenden puts(), um die Zeichenfolge anzuzeigen.

Beispiel 2: fgets () und put ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Ausgabe

 Name eingeben: Tom Hanks Name: Tom Hanks 

Hier haben wir die fgets()Funktion verwendet, um eine Zeichenfolge vom Benutzer zu lesen.

fgets(name, sizeof(name), stdlin); // read string

Die sizeof(name)Ergebnisse sind 30. Daher können wir maximal 30 Zeichen als Eingabe verwenden, was der Größe der Namenszeichenfolge entspricht.

Zum Drucken der Zeichenfolge haben wir verwendet puts(name);.

Hinweis: Die gets()Funktion kann auch darin bestehen, Eingaben vom Benutzer entgegenzunehmen. Es wird jedoch aus dem C-Standard entfernt.
Dies liegt daran, gets()dass Sie eine beliebige Länge von Zeichen eingeben können. Daher kann es zu einem Pufferüberlauf kommen.

Übergeben von Zeichenfolgen an Funktionen

Strings können auf ähnliche Weise wie Arrays an eine Funktion übergeben werden. Weitere Informationen zum Übergeben von Arrays an eine Funktion.

Beispiel 3: Übergabe eines Strings an eine Funktion

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Zeichenfolgen und Zeiger

Ähnlich wie bei Arrays werden String-Namen in Zeiger "zerfallen". Daher können Sie Zeiger verwenden, um Elemente der Zeichenfolge zu bearbeiten. Wir empfehlen Ihnen, C-Arrays und Zeiger zu überprüfen, bevor Sie dieses Beispiel überprüfen.

Beispiel 4: Zeichenfolgen und Zeiger

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Häufig verwendete Zeichenfolgenfunktionen

  • strlen () - berechnet die Länge eines Strings
  • strcpy () - kopiert einen String in einen anderen
  • strcmp () - vergleicht zwei Zeichenfolgen
  • strcat () - verkettet zwei Zeichenfolgen

Interessante Beiträge...