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.
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 :
- Déclarer un tableau de caractères nommé
nameavec exactement 5 éléments - Initialiser manuellement le tableau
namecaractè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)
- Déclarer un deuxième tableau de caractères nommé
cityavec exactement 7 éléments - Initialiser manuellement le tableau
citycaractè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'
- Utiliser des affectations individuelles de caractères pour 'B', 'o', 's', 't', 'o', 'n' et
- Afficher les deux chaînes à l’aide de
printfavec le spécificateur de format%s - Montrer ce qui se passe sans terminaison nulle en créant un troisième tableau de caractères nommé
testavec 4 éléments - Initialiser
testuniquement avec les caractères 'A', 'B', 'C', 'D' (sans terminaison nulle) - Afficher le tableau
testà l’aide de%spour 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;
}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
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînesEntraînez-vous par vous-même : Compilateur C en ligne