Menu
Coddy logo textTech

Der Null-Terminator

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

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

Das Nullterminierungszeichen ist ein Zeichen mit dem ASCII-Wert null, das das Ende einer Zeichenkette markiert. Ohne dieses Zeichen wüssten Funktionen wie printf nicht, wo deine Zeichenkette endet, und würden den Speicher weiter auslesen, bis sie zufällig auf ein Nullbyte stoßen, was häufig eine fehlerhafte Ausgabe erzeugt.

char word[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
// Das \0 sagt C: "Der String endet hier"

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

Dieser Nullterminator ist der Grund, warum ein 5-Zeichen-Wort wie „Hello“ ein Zeichenarray mit 6 Elementen benötigt – ein zusätzliches Element für \0. Das Verständnis dieses Konzepts ist entscheidend, da es die Grundlage dafür bildet, wie alle C-String-Funktionen bestimmen, wo Zeichenketten beginnen und enden.

challenge icon

Aufgabe

Einfach

Schreibe ein C-Programm, das das Erstellen und Arbeiten mit Zeichenketten mithilfe einer manuellen Zeichen-für-Zeichen-Initialisierung mit ordnungsgemäßer Nullterminierung demonstriert. Dein Programm sollte:

  1. Ein Zeichenarray namens name mit genau 5 Elementen deklarieren
  2. Das name-Array manuell Zeichen für Zeichen initialisieren, sodass "John" mit ordnungsgemäßer Nullterminierung entsteht:
    • Erstes Element: 'J'
    • Zweites Element: 'o'
    • Drittes Element: 'h'
    • Viertes Element: 'n'
    • Fünftes Element: '\0' (Nullterminator)
  3. Ein zweites Zeichenarray namens city mit genau 7 Elementen deklarieren
  4. Das city-Array manuell Zeichen für Zeichen initialisieren, sodass "Boston" mit ordnungsgemäßer Nullterminierung entsteht:
    • Individuelle Zeichen-Zuweisungen für 'B', 'o', 's', 't', 'o', 'n' und '\0' verwenden
  5. Beide Zeichenketten mit printf und dem Formatbezeichner %s ausgeben
  6. Demonstrieren, was ohne Nullterminierung geschieht, indem ein drittes Zeichenarray namens test mit 4 Elementen erstellt wird
  7. test nur mit den Zeichen 'A', 'B', 'C', 'D' (ohne Nullterminator) initialisieren
  8. Das test-Array mit %s ausgeben, 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 Aufgabe testet dein Verständnis der manuellen Erstellung von Zeichenketten, der entscheidenden Bedeutung des Nullterminators '\0' in C-Zeichenketten und der Tatsache, dass printf mit %s darauf angewiesen ist, den Nullterminator zu finden, um zu wissen, wo die Zeichenkette endet.

Probier es selbst

#include <stdio.h>

int main() {
    // TODO: Schreiben Sie hier Ihren Code
    // Deklarieren und initialisieren Sie die Zeichen-Arrays wie angegeben
    
    // Ergebnisse ausgeben
    
    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