Menu
Coddy logo textTech

Der Null-Terminator

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 13 von 63.

Sie haben gelernt, dass Strings in C Zeichen-Arrays sind, aber es gibt ein entscheidendes Detail, damit sie richtig funktionieren: Jeder C-String muss mit einem speziellen Zeichen enden, das als Null-Terminator bezeichnet wird, geschrieben als \0.

Der Null-Terminator ist ein Zeichen mit dem ASCII-Wert Null, das das Ende einer Zeichenfolge markiert. Ohne ihn wüssten Funktionen wie printf nicht, wo Ihre Zeichenfolge endet, und würden so lange weiter Speicher auslesen, bis sie zufällig auf ein Null-Byte stoßen, was oft zu unbrauchbaren Ausgaben führt.

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

Wenn Sie einen String mit einem Literal wie "Hello" initialisieren, fügt C automatisch den Null-Terminator für Sie hinzu. Aber wenn Sie einen String manuell Zeichen für Zeichen aufbauen, müssen Sie daran denken, \0 am Ende hinzuzufügen.

Dieser Null-Terminator ist der Grund, warum ein Wort mit 5 Zeichen wie „Hello“ ein Character-Array mit 6 Elementen benötigt – ein zusätzlicher Platz für das \0. Das Verständnis dieses Konzepts ist essenziell, da es die Grundlage dafür ist, wie alle C-String-Funktionen bestimmen, wo Strings beginnen und enden.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das das Erstellen und Arbeiten mit Strings durch manuelle zeichenweise Initialisierung mit ordnungsgemäßer Nullterminierung demonstriert. Ihr Programm sollte:

  1. Ein Zeichen-Array namens name mit genau 5 Elementen deklarieren
  2. Das name Array manuell Zeichen für Zeichen initialisieren, um "John" mit ordnungsgemäßer Nullterminierung zu buchstabieren:
    • Erstes Element: 'J'
    • Zweites Element: 'o'
    • Drittes Element: 'h'
    • Viertes Element: 'n'
    • Fünftes Element: '\0' (Nullterminator)
  3. Ein zweites Zeichen-Array namens city mit genau 7 Elementen deklarieren
  4. Das city Array manuell Zeichen für Zeichen initialisieren, um "Boston" mit ordnungsgemäßer Nullterminierung zu buchstabieren:
    • Verwenden Sie einzelne Zeichenzuweisungen für 'B', 'o', 's', 't', 'o', 'n' und '\0'
  5. Beide Strings mit printf und dem Formatspezifizierer %s ausgeben
  6. Demonstrieren, was ohne Nullterminierung passiert, indem Sie ein drittes Zeichen-Array namens test mit 4 Elementen erstellen
  7. Initialisieren Sie test nur mit den Zeichen 'A', 'B', 'C', 'D' (kein Nullterminator)
  8. Geben Sie das test Array mit %s aus, um eine unvorhersehbare Ausgabe zu zeigen

Ihre Ausgabe sollte die Ergebnisse im folgenden Format anzeigen:

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

Diese Herausforderung testet Ihr Verständnis der manuellen String-Konstruktion, die entscheidende Bedeutung des Nullterminators '\0' in C-Strings und wie printf mit %s darauf angewiesen ist, den Nullterminator zu finden, um zu wissen, wo der String 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 Logic & Flow