Menu
Coddy logo textTech

Le terminateur nul

Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 13 sur 63.

Vous avez appris que les chaînes de caractères en C sont des tableaux de caractères, mais un détail crucial leur permet de fonctionner correctement : chaque chaîne de caractères en C doit se terminer par un caractère spécial appelé le caractère de fin nul, écrit sous la forme \0.

Le terminateur nul est un caractère ayant la valeur ASCII zéro qui marque la fin d'une chaîne de caractères. Sans lui, les fonctions comme printf ne sauraient pas où votre chaîne se termine et continueraient à lire la mémoire jusqu'à ce qu'elles rencontrent par hasard un octet nul, produisant souvent un résultat incohérent.

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

Lorsque vous initialisez une chaîne de caractères avec un littéral comme "Hello", le C ajoute automatiquement le terminateur nul pour vous. Mais lorsque vous construisez manuellement une chaîne caractère par caractère, vous devez vous souvenir d'ajouter \0 à la fin.

Ce terminateur nul est la raison pour laquelle un mot de 5 caractères comme "Hello" nécessite un tableau de caractères de 6 éléments - un espace supplémentaire pour le \0. Comprendre ce concept est essentiel car c'est le fondement de la manière dont toutes les fonctions de chaîne en C déterminent où les chaînes commencent et se terminent.

challenge icon

Défi

Facile

Écrivez un programme en C qui montre comment créer et manipuler des chaînes de caractères à l’aide d’une initialisation manuelle caractère par caractère avec une terminaison nulle appropriée. Votre programme doit :

  1. Déclarer un tableau de caractères nommé name avec exactement 5 éléments
  2. Initialiser manuellement le tableau name caractère par caractère pour écrire "John" avec une terminaison nulle appropriée :
    • Premier élément : 'J'
    • Deuxième élément : 'o'
    • Troisième élément : 'h'
    • Quatrième élément : 'n'
    • Cinquième élément : '\0' (terminaison nulle)
  3. Déclarer un deuxième tableau de caractères nommé city avec exactement 7 éléments
  4. Initialiser manuellement le tableau city caractère par caractère pour écrire "Boston" avec une terminaison nulle appropriée :
    • Utiliser des affectations individuelles de caractères pour 'B', 'o', 's', 't', 'o', 'n' et '\0'
  5. Afficher les deux chaînes à l’aide de printf avec le spécificateur de format %s
  6. Montrer ce qui se passe sans terminaison nulle en créant un troisième tableau de caractères nommé test avec 4 éléments
  7. Initialiser test uniquement avec les caractères 'A', 'B', 'C', 'D' (sans terminaison nulle)
  8. Afficher le tableau test à l’aide de %s pour montrer un résultat imprévisible

Votre sortie doit afficher les résultats au format suivant :

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

Ce défi teste votre compréhension de la construction manuelle de chaînes, de l’importance cruciale de la terminaison nulle '\0' dans les chaînes C, et de la façon dont printf avec %s s’appuie sur la recherche de la terminaison nulle pour savoir où la chaîne se termine.

Essayez vous-même

#include <stdio.h>

int main() {
    // TODO: Écrivez votre code ici
    // Déclarer et initialiser les tableaux de caractères comme spécifié
    
    // Afficher les résultats
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne