Zurück zu: C Tutorial
Saiten
Zeichenfolgen werden zum Speichern von Text/Zeichen verwendet.
Beispielsweise ist „Hallo Welt“ eine Zeichenfolge.
Im Gegensatz zu vielen anderen Programmiersprachen gibt es in C keinen String Typ, mit dem sich String-Variablen einfach erstellen lassen. Stattdessen müssen Sie den char
Typ verwenden und ein Array von Zeichen erstellen, um in C einen String zu erstellen:
char greetings[] = "Hello World!";
Beachten Sie, dass Sie doppelte Anführungszeichen (""
) verwenden müssen.
Um den String auszugeben, können Sie die Funktion printf()
zusammen mit dem Formatbezeichner %s
verwenden, um C mitzuteilen, dass wir jetzt mit Strings arbeiten:
Beispiel
char greetings[] = "Hello World!";
printf("%s", greetings);
Zugriffszeichenfolgen
Da Zeichenfolgen in C eigentlich Arrays sind, können Sie auf eine Zeichenfolge zugreifen, indem Sie in eckigen Klammern []
auf ihre Indexnummer verweisen.
Dieses Beispiel druckt das erste Zeichen (0) in Grüßen:
Beispiel
char greetings[] = "Hello World!";
printf("%c", greetings[0]);
Beachten Sie, dass wir den Formatbezeichner
%c
verwenden müssen, um ein einzelnes Zeichen zu drucken.
Zeichenfolgen ändern
Um den Wert eines bestimmten Zeichens in einer Zeichenfolge zu ändern, verweisen Sie auf die Indexnummer und verwenden Sie einfache Anführungszeichen:
Beispiel
char greetings[] = "Hello World!";
greetings[0] = 'J';
printf("%s", greetings);
// Outputs Jello World! instead of Hello World!
Durchlaufen einer Zeichenfolge
Sie können die Zeichen einer Zeichenfolge auch mithilfe einer For
Schleife durchlaufen:
Beispiel
char carName[] = "Volvo";
int i;
for (i = 0; i < 5; ++i) {
printf("%c\n", carName[i]);
}
Und wie wir im Kapitel zu Arrays angegeben haben, können Sie auch die sizeof-Formel verwenden (anstatt die Größe des Arrays manuell in die Schleifenbedingung (i < 5
) zu schreiben), um die Schleife nachhaltiger zu machen:
Beispiel
char carName[] = "Volvo";
int length = sizeof(carName) / sizeof(carName[0]);
int i;
for (i = 0; i < length; ++i) {
printf("%c\n", carName[i]);
}
Eine andere Möglichkeit zum Erstellen von Zeichenfolgen
In den obigen Beispielen haben wir ein „String-Literal“ verwendet, um eine String-Variable zu erstellen. Dies ist die einfachste Möglichkeit, einen String in C zu erstellen.
Beachten Sie auch, dass Sie eine Zeichenfolge mit einer Reihe von Zeichen erstellen können. Dieses Beispiel erzeugt dasselbe Ergebnis wie das Beispiel am Anfang dieser Seite:
Beispiel
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
printf("%s", greetings);
Warum fügen wir am Ende das Zeichen
\0
ein? Dies wird als „Null-Abschlusszeichen“ bezeichnet und muss beim Erstellen von Zeichenfolgen mit dieser Methode eingefügt werden. Es teilt C mit, dass dies das Ende der Zeichenfolge ist.
Unterschiede
Der Unterschied zwischen den beiden Möglichkeiten zum Erstellen von Zeichenfolgen besteht darin, dass die erste Methode einfacher zu schreiben ist und Sie das Zeichen \0
nicht einfügen müssen, da C dies für Sie erledigt.
Beachten Sie, dass die Größe beider Arrays gleich ist: Sie haben beide 13 Zeichen (Leerzeichen zählen übrigens auch als Zeichen), einschließlich des Zeichens \0
:
Beispiel
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
char greetings2[] = "Hello World!";
printf("%lu\n", sizeof(greetings)); // Outputs 13
printf("%lu\n", sizeof(greetings2)); // Outputs 13
Beispiel aus dem echten Leben
Verwenden Sie Zeichenfolgen, um eine einfache Willkommensnachricht zu erstellen:
Beispiel
char message[] = "Good to see you,";
char fname[] = "John";
printf("%s %s!", message, fname);
Zeichenfolgen – Sonderzeichen
Da Zeichenfolgen in Anführungszeichen geschrieben werden müssen, wird C diese Zeichenfolge falsch verstehen und einen Fehler generieren:
char txt[] = "We are the so-called "Vikings" from the north.";
Um dieses Problem zu vermeiden, können Sie das Escape-Zeichen „Backslash“ verwenden.
Das Escape-Zeichen „Backslash“ (\
) wandelt Sonderzeichen in Zeichenfolgen um:
Escape Zeichen | Ergebnis | Beschreibung |
---|---|---|
\‘ | ‚ | Einfaches Anführungszeichen |
\“ | „ | Doppeltes Anführungszeichen |
\\ | \ | Backslash |
Die Sequenz \"
fügt ein doppeltes Anführungszeichen in einen String ein:
Beispiel
char txt[] = "We are the so-called \"Vikings\" from the north.";
Die Sequenz \'
fügt ein einfaches Anführungszeichen in einen String ein:
Beispiel
char txt[] = "It\'s alright.";
Die Sequenz \\
fügt einen einzelnen Backslash in einen String ein:
Beispiel
char txt[] = "The character \\ is called backslash.";
Andere beliebte Escape-Zeichen in C sind:
Escape Zeichen | Ergebnis |
---|---|
\n | Neue Zeile |
\t | Tab |
\0 | Null |
Zeichenfolgenfunktionen
C verfügt auch über viele nützliche String-Funktionen, mit denen bestimmte Operationen an Strings ausgeführt werden können.
Um sie zu verwenden, müssen Sie die Header-Datei <string.h>
in Ihr Programm einbinden:
#include <string.h>
Zeichenfolgenlänge
Um beispielsweise die Länge einer Zeichenfolge zu ermitteln, können Sie die Funktion strlen()
verwenden:
Beispiel
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet));
Im Kapitel Strings haben wir sizeof
verwendet, um die Größe eines Strings/Arrays zu ermitteln. Beachten Sie, dass sizeof
und strlen
sich unterschiedlich verhalten, da sizeof
beim Zählen auch das Zeichen \0
berücksichtigt:
Beispiel
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 27
Es ist auch wichtig zu wissen, dass sizeof
immer die Speichergröße (in Bytes) und nicht die tatsächliche Zeichenfolgenlänge zurückgibt:
Beispiel
char alphabet[50] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 50
Zeichenfolgen verketten
Um zwei Zeichenfolgen zu verketten (kombinieren), können Sie die Funktion strcat()
verwenden:
Beispiel
char str1[20] = "Hello ";
char str2[] = "World!";
// Concatenate str2 to str1 (result is stored in str1)
strcat(str1, str2);
// Print str1
printf("%s", str1);
Beachten Sie, dass die Größe von
str1
groß genug sein sollte, um das Ergebnis der beiden kombinierten Zeichenfolgen zu speichern (20 in unserem Beispiel).
Zeichenfolgen kopieren
Um den Wert einer Zeichenfolge in eine andere zu kopieren, können Sie die Funktion strcpy()
verwenden:
Beispiel
char str1[20] = "Hello World!";
char str2[20];
// Copy str1 to str2
strcpy(str2, str1);
// Print str2
printf("%s", str2);
Beachten Sie, dass die Größe von
str2
groß genug sein sollte, um die kopierte Zeichenfolge zu speichern (20 in unserem Beispiel).
Saiten vergleichen
Um zwei Zeichenfolgen zu vergleichen, können Sie die Funktion strcmp()
verwenden.
Es gibt 0
zurück, wenn die beiden Zeichenfolgen gleich sind, andernfalls einen Wert ungleich 0:
Beispiel
char str1[] = "Hello";
char str2[] = "Hello";
char str3[] = "Hi";
// Compare str1 and str2, and print the result
printf("%d\n", strcmp(str1, str2)); // Returns 0 (the strings are equal)
// Compare str1 and str3, and print the result
printf("%d\n", strcmp(str1, str3)); // Returns -4 (the strings are not equal)