Menu
Coddy logo textTech

Il terminatore null

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 13 di 63.

Hai imparato che le stringhe in C sono array di caratteri, ma c'è un dettaglio fondamentale che permette loro di funzionare correttamente: ogni stringa C deve terminare con un carattere speciale chiamato terminatore nullo, scritto come \0.

Il terminatore null è un carattere con valore ASCII pari a zero che indica la fine di una stringa. Senza di esso, funzioni come printf non saprebbero dove termina la stringa e continuerebbero a leggere la memoria finché non incontrano casualmente un byte zero, spesso producendo un output senza senso.

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

Quando inizializzi una stringa con un valore letterale come "Hello", C aggiunge automaticamente il terminatore nullo. Ma quando costruisci manualmente una stringa carattere per carattere, devi ricordarti di aggiungere \0 alla fine.

Questo terminatore null è il motivo per cui una parola di 5 caratteri come "Hello" richiede un array di caratteri di 6 elementi: uno spazio in più per \0. Comprendere questo concetto è essenziale, perché costituisce il fondamento del modo in cui tutte le funzioni per stringhe in C determinano dove iniziano e finiscono le stringhe.

challenge icon

Sfida

Facile

Scrivi un programma C che mostri come creare e usare stringhe mediante inizializzazione manuale carattere per carattere con la corretta terminazione null. Il programma deve:

  1. Dichiarare un array di caratteri chiamato name con esattamente 5 elementi
  2. Inizializzare manualmente l'array name carattere per carattere in modo da comporre "John", con la corretta terminazione null:
    • Primo elemento: 'J'
    • Secondo elemento: 'o'
    • Terzo elemento: 'h'
    • Quarto elemento: 'n'
    • Quinto elemento: '\0' (terminatore null)
  3. Dichiarare un secondo array di caratteri chiamato city con esattamente 7 elementi
  4. Inizializzare manualmente l'array city carattere per carattere in modo da comporre "Boston", con la corretta terminazione null:
    • Usare assegnazioni individuali dei caratteri per 'B', 'o', 's', 't', 'o', 'n' e '\0'
  5. Stampare entrambe le stringhe usando printf con lo specificatore di formato %s
  6. Mostrare cosa succede senza terminazione null creando un terzo array di caratteri chiamato test con 4 elementi
  7. Inizializzare test solo con i caratteri 'A', 'B', 'C', 'D' (senza terminatore null)
  8. Stampare l'array test usando %s per mostrare un risultato imprevedibile

L'output deve mostrare i risultati nel seguente formato:

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

Questa sfida verifica la tua comprensione della creazione manuale di stringhe, dell'importanza fondamentale del terminatore null '\0' nelle stringhe C e di come printf con %s si basi sulla ricerca del terminatore null per sapere dove termina la stringa.

Provalo tu

#include <stdio.h>

int main() {
    // TODO: Scrivi qui il tuo codice
    // Dichiara e inizializza gli array di caratteri come specificato
    
    // Stampa i risultati
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online