C-Strings: Wie null-terminierte Zeichenarrays funktionieren
Strings in C sind tatsächlich eindimensionale Arrays von Zeichen, die durch ein Nullzeichen '\0' terminiert werden. Ein null-terminierter String enthält also die Zeichen des Strings gefolgt von einem Nullzeichen.
Die folgende Deklaration und Initialisierung erstellt einen String mit dem Wort „Hello“. Um das Nullzeichen am Ende aufzunehmen, ist die Größe des Zeichenarrays um eins größer als die Anzahl der Buchstaben in „Hello“.
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Wenn Sie die Array-Initialisierungsregel befolgen, können Sie auch schreiben:
char greeting[] = "Hello";
Der C-Compiler setzt das '\0' automatisch am Ende des Strings, wenn er das Array initialisiert.
Beispiel: String ausgeben
#include <stdio.h>
int main() {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Grußbotschaft: %s\n", greeting);
return 0;
}
Ausgabe: Grußbotschaft: Hello
Wichtige String-Funktionen
C unterstützt eine Vielzahl von Funktionen zur Manipulation null-terminierter Strings (in <string.h>):
| Nr. | Funktion & Zweck |
|---|---|
| 1 | strcpy(s1, s2) – Kopiert String s2 in s1. |
| 2 | strcat(s1, s2) – Hängt String s2 an s1 an. |
| 3 | strlen(s1) – Gibt die Länge von s1 zurück (ohne '\0'). |
| 4 | strcmp(s1, s2) – Vergleicht Strings: 0 wenn gleich, <0 wenn s1<s2, >0 wenn s1>s2. |
| 5 | strchr(s1, ch) – Gibt Zeiger auf erstes Vorkommen von ch in s1 zurück. |
| 6 | strstr(s1, s2) – Gibt Zeiger auf erstes Vorkommen von s2 in s1 zurück. |
Beispiel: String-Funktionen verwenden
#include <stdio.h>
#include <string.h>
int main() {
char str1[12] = "Hello";
char str2[12] = "World";
char str3[12];
int len;
strcpy(str3, str1);
printf("strcpy(str3, str1): %s\n", str3);
strcat(str1, str2);
printf("strcat(str1, str2): %s\n", str1);
len = strlen(str1);
printf("strlen(str1): %d\n", len);
return 0;
}
Ausgabe:
strcpy(str3, str1): Hello
strcat(str1, str2): HelloWorld
strlen(str1): 10
Weitere nützliche String-Funktionen
- strncpy(s1, s2, n) – Kopiert maximal n Zeichen.
- strncat(s1, s2, n) – Hängt maximal n Zeichen an.
- strncmp(s1, s2, n) – Vergleicht maximal n Zeichen.
- strrchr(s1, ch) – Letztes Vorkommen von ch.
- strpbrk(s1, s2) – Erstes Zeichen aus s2 in s1.
- strspn(s1, s2) – Länge des Präfixes nur aus Zeichen in s2.
- strcspn(s1, s2) – Länge des Präfixes ohne Zeichen aus s2.
Wichtiger Hinweis: Viele der klassischen String-Funktionen (wie strcpy, strcat) sind unsicher bei Pufferüberläufen. In modernem C sollten Sie sicherere Alternativen wie strncpy, snprintf oder strlcpy/strlcat (BSD) verwenden.
C Sprache
- C# Strings meistern: Grundlagen, Operationen & fortgeschrittene Techniken
- Java Strings meistern: Erstellung, Methoden und Best Practices
- String-Repräsentationen in Java Enums meistern
- String-Listen in VHDL erstellen: Best Practices & Beispiel
- C++ String‑Funktionen meistern: strcpy, strcat, strlen, strcmp – Praxisbeispiele
- C Strings einfach gemacht: Deklaration, Ein- & Ausgabe, Bibliotheksfunktionen
- Java String.charAt(): Syntax, Rückgabetyp, Exceptions und praktisches Beispiel
- Java String.endsWith(): String-Suffixe prüfen mit Beispielen
- Python String-Operationen meistern: Replace, Join, Split, Reverse und Case Conversion
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen