Menu
CoddyTech

Der Null-Terminator

Teil des Abschnitts Logik & Ablauf der C-Journey von Coddy. Lektion 13 von 63.

Du hast gelernt, dass Strings in C Zeichen-Arrays sind, aber es gibt ein entscheidendes Detail, das dafür sorgt, dass sie richtig funktionieren: Jeder String in C muss mit einem Sonderzeichen enden, dem sogenannten Nullterminator, geschrieben als \0.

Der Nullterminator ist ein Zeichen mit dem ASCII-Wert null, das das Ende einer Zeichenkette markiert. Ohne ihn wüssten Funktionen wie printf nicht, wo deine Zeichenkette endet, und würden den Speicher weiter auslesen, bis sie zufällig auf ein Null-Byte stoßen, was oft zu fehlerhafter Ausgabe führt.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// Das \0 teilt C mit: "The string ends here"

Wenn du eine Zeichenkette mit einem Literal wie "Hello" initialisierst, fügt C automatisch den Nullterminator hinzu. Wenn du eine Zeichenkette jedoch manuell Zeichen für Zeichen aufbaust, musst du daran denken, am Ende \0 hinzuzufügen.

Dieser Nullterminator ist der Grund, warum ein Wort mit 5 Zeichen wie „Hello“ ein Zeichenarray mit 6 Elementen benötigt – ein zusätzliches Feld für \0. Dieses Konzept zu verstehen, ist unerlässlich, denn es bildet die Grundlage dafür, wie alle C-String-Funktionen bestimmen, wo Zeichenketten beginnen und enden.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das zeigt, wie man Zeichenketten erstellt und bearbeitet, indem man die Zeichen manuell einzeln initialisiert und korrekt mit einem Nullterminator abschließt. Dein Programm soll Folgendes tun:

  1. Deklariere ein Zeichenarray namens name mit genau 5 Elementen
  2. Initialisiere das Array name manuell Zeichen für Zeichen, sodass es „John“ ergibt und korrekt mit einem Nullterminator abgeschlossen wird:
    • Erstes Element: 'J'
    • Zweites Element: 'o'
    • Drittes Element: 'h'
    • Viertes Element: 'n'
    • Fünftes Element: '\0' (Nullterminator)
  3. Deklariere ein zweites Zeichenarray namens city mit genau 7 Elementen
  4. Initialisiere das Array city manuell Zeichen für Zeichen, sodass es „Boston“ ergibt und korrekt mit einem Nullterminator abgeschlossen wird:
    • Verwende einzelne Zeichen-Zuweisungen für 'B', 'o', 's', 't', 'o', 'n' und '\0'
  5. Gib beide Zeichenketten mit printf und dem Formatspezifizierer %s aus
  6. Zeige, was ohne Nullterminator passiert, indem du ein drittes Zeichenarray namens test mit 4 Elementen erstellst
  7. Initialisiere test ausschließlich mit den Zeichen 'A', 'B', 'C', 'D' (ohne Nullterminator)
  8. Gib das Array test mit %s aus, um eine unvorhersehbare Ausgabe zu zeigen

Deine Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:

Name: John
City: Boston
Test without null terminator: ABCD[unpredictable characters]

Diese Herausforderung prüft dein Verständnis dafür, wie Zeichenketten manuell erstellt werden, wie wichtig der Nullterminator '\0' in C-Zeichenketten ist und wie printf mit %s darauf angewiesen ist, den Nullterminator zu finden, um zu erkennen, wo die Zeichenkette endet.

Probier es selbst

#include <stdio.h>

int main() {
    // TODO: Schreibe hier deinen Code
    // Deklariere und initialisiere die Zeichenarrays wie angegeben
    
    // Gib die Ergebnisse aus
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C-Compiler