Strings in C: Ein Anfängerleitfaden
Hallo da draußen, zukünftige Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt der Strings in C. Machen Sie sich keine Sorgen, wenn Sie完全neu im Programmieren sind – ich werde Ihr freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Bis zum Ende dieses Tutorials werden Sie wie ein Profi mit C字符串沟通!
Was sind Strings in C?
Lassen Sie uns mit den Grundlagen beginnen. In C ist ein String im Wesentlichen eine Sequenz von Zeichen. Stellen Sie es sich wie eine Kette vor, bei der jede Perle ein Zeichen ist. Diese Zeichen werden in benachbarten Speicherorten gespeichert und enden mit einem besonderen Zeichen, dem Nullzeichen ('\0').
Hier ist ein有趣的事实: In C gibt es keinen separaten Datentyp für Strings. Stattdessen verwenden wir ein Array von Zeichen, um einen String darzustellen. Es ist so, als ob man eine Reihe von Briefkästen verwendet, um eine Reihe von Briefen zu speichern!
Erstellen eines Strings in C
Nun, lassen Sie uns die Hände schmutzig machen und unseren ersten String in C erstellen. Es gibt einige Möglichkeiten, dies zu tun, aber wir beginnen mit der einfachsten Methode:
char begrüßung[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
In diesem Beispiel haben wir einen String namens begrüßung
erstellt, der das Wort "Hello" enthält. Lassen Sie uns das einmal durchgehen:
-
char
ist der Datentyp für Zeichen. -
begrüßung
ist der Name unseres Strings. -
[6]
gibt die Größe unseres Arrays an. Wir brauchen 6 Plätze: 5 für "Hello" und 1 für das Nullzeichen. - Die Zeichen werden in einfache Anführungszeichen gesetzt und durch Kommas getrennt.
- Vergessen Sie nicht das Nullzeichen
'\0'
am Ende!
Initialisieren eines Strings ohne Angabe der Größe
C ist ziemlich schlau und kann die Größe des Strings für uns ermitteln. Sehen Sie sich das an:
char begrüßung[] = "Hello";
Ist das nicht toll? C fügt automatisch das Nullzeichen hinzu und berechnet die Größe. Es ist wie Magie, aber es ist nur C, das effizient ist!
Durchlaufen eines Strings
Nun, da wir einen String haben, lernen wir, wie man durch ihn läuft. Dies ist nützlich, wenn Sie jeden einzelnen Buchstaben verarbeiten möchten:
#include <stdio.h>
int main() {
char begrüßung[] = "Hello";
int i = 0;
while (begrüßung[i] != '\0') {
printf("%c", begrüßung[i]);
i++;
}
return 0;
}
Dieser Code gibt jedes Zeichen von "Hello" einzeln aus. Die Schleife fortsetzt, bis sie das Nullzeichen erreicht, das das Ende des Strings signalisiert.
Drucken eines Strings (Verwendung des Formatbelegers %s)
Durchlaufen eines Strings zeichen für zeichen ist spaßig, aber es gibt eine einfachere Möglichkeit, Strings zu drucken:
#include <stdio.h>
int main() {
char begrüßung[] = "Hello, World!";
printf("%s", begrüßung);
return 0;
}
Der Formatbeleger %s
teilt printf
mit, dass ein String bevorsteht. Es ist, als ob printf
eine Vorwarnung bekommt: "Achtung, ein String kommt auf dich zu!"
Erstellen eines Strings mit Anführungszeichen
Erinnern Sie sich an unser erstes Beispiel, bei dem wir einen String zeichen für zeichen erstellt haben? Nun, es gibt einen Shortcut:
char begrüßung[] = "Hello, World!";
Dies tut dasselbe wie unser früheres Beispiel, aber es ist viel kürzer. C kümmert sich darum, das Nullzeichen hinzuzufügen. Es ist, als ob man eine vorgestrungene Kette bestellt, anstatt die Perlen selbst zu stricken!
String-Eingabe mit scanf()
Nun machen wir unser Programm interaktiv, indem wir Eingaben vom Benutzer entgegennehmen:
#include <stdio.h>
int main() {
char name[50];
printf("Geben Sie Ihren Namen ein: ");
scanf("%s", name);
printf("Hallo, %s!\n", name);
return 0;
}
Hier verwenden wir scanf()
, um einen String vom Benutzer zu lesen. Aber seien Sie vorsichtig! scanf()
stoppt das Lesen, wenn es das erste Leerzeichen trifft. Wenn Sie also "John Doe" eingeben, wird nur "John" in name
gespeichert.
String-Eingabe mit Leerzeichen
Um einen String mit Leerzeichen zu lesen, können wir den folgenden Formatbeleger mit scanf()
verwenden:
#include <stdio.h>
int main() {
char fullName[100];
printf("Geben Sie Ihren vollständigen Namen ein: ");
scanf("%[^\n]s", fullName);
printf("Hallo, %s!\n", fullName);
return 0;
}
Der Formatbeleger %[^\n]s
weist scanf()
an, bis zum Zeilenumbruch zu lesen. Dies ermöglicht es uns, vollständige Namen oder Sätze mit Leerzeichen zu lesen.
String-Eingabe mit den Funktionen gets() und fgets()
Während gets()
einfach zu verwenden ist, gilt es als unsicher, da es keine Grenzenprüfung durchführt. Stattdessen verwenden wir die sicherere Funktion fgets()
:
#include <stdio.h>
int main() {
char sentence[100];
printf("Geben Sie einen Satz ein: ");
fgets(sentence, sizeof(sentence), stdin);
printf("Sie haben eingegeben: %s", sentence);
return 0;
}
fgets()
ist sicherer, da es Ihnen ermöglicht, die maximale Anzahl der zu lesenden Zeichen anzugeben, was vor Überläufen schützt.
Drucken eines Strings mit den Funktionen puts() und fputs()
Schließlich schauen wir uns einige alternative Methoden zum Drucken von Strings an:
#include <stdio.h>
int main() {
char begrüßung[] = "Hello, World!";
puts(begrüßung); // puts() fügt automatisch eine neue Zeile hinzu
fputs(begrüßung, stdout); // fputs() fügt keine neue Zeile hinzu
return 0;
}
puts()
ist einfach und fügt automatisch eine neue Zeile hinzu, während fputs()
Ihnen mehr Kontrolle über die Ausgabe gibt.
Hier ist eine Tabelle, die die String-Funktionen zusammenfasst, die wir behandelt haben:
Funktion | Zweck | Beispiel |
---|---|---|
scanf() | Formatierter Eingabe lesen | scanf("%s", str); |
gets() | Eine Zeile lesen (unsicher, vermeiden) | gets(str); |
fgets() | Eine Zeile sicher lesen | fgets(str, size, stdin); |
printf() | Formatierte Ausgabe drucken | printf("%s", str); |
puts() | Einen String mit Zeilenumbruch drucken | puts(str); |
fputs() | Einen String ohne Zeilenumbruch drucken | fputs(str, stdout); |
Und da haben Sie es! Sie haben Ihre ersten Schritte in die Welt der Strings in C unternommen. Erinnern Sie sich daran, Übung macht den Meister, also fürchten Sie sich nicht, diese Konzepte auszuprobieren. Frohes Coden und mögen Ihre Strings immer nullterminiert sein!
Credits: Image by storyset