Les chaînes comme tableaux de char
Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 12 sur 63.
En C, il n'existe pas de type de données de chaîne de caractères intégré comme on peut en trouver dans d'autres langages de programmation. Au lieu de cela, les chaînes sont représentées sous forme de tableaux de caractères. Ce concept fondamental est essentiel pour comprendre comment le texte est géré en programmation C.
Une chaîne de caractères en C est simplement une séquence de caractères stockés dans des emplacements mémoire consécutifs. Pour créer une chaîne, vous déclarez un tableau de caractères suffisamment grand pour contenir tous les caractères dont vous avez besoin, plus un espace supplémentaire pour un caractère de terminaison spécial.
char greeting[6]; // Peut contenir 5 caractères + le terminateur
char message[20]; // Peut contenir jusqu'à 19 caractères + le terminateurLa manière la plus pratique de travailler avec des chaînes de caractères est de les initialiser directement avec un littéral de chaîne lorsque vous déclarez le tableau. Le langage C gère automatiquement les détails du stockage de chaque caractère dans le tableau :
char greeting[6] = "Hello";
// Ceci stocke : 'H', 'e', 'l', 'l', 'o', plus un terminateur spécialVous pouvez également laisser le C déterminer automatiquement la taille du tableau en omettant la spécification de taille lors de l'initialisation avec une chaîne littérale :
char greeting[] = "Hello"; // C donne automatiquement à ceci la taille 6Comprendre que les chaînes de caractères sont des tableaux de caractères est crucial, car cela explique comment le langage C gère les données textuelles et vous prépare à travailler avec des fonctions de manipulation de chaînes qui opèrent sur ces tableaux de caractères.
Défi
FacileÉcrivez un programme en C qui démontre la création et l'utilisation de tableaux de caractères pour stocker des chaînes de caractères. Votre programme doit :
- Déclarer un tableau de caractères nommé
greetingavec suffisamment d'espace pour contenir la chaîne "Hello" (n'oubliez pas de prendre en compte le terminateur nul) - Initialiser le tableau
greetingavec la chaîne littérale "Hello" - Déclarer un deuxième tableau de caractères nommé
messageavec 20 éléments - Initialiser le tableau
messageavec la chaîne littérale "Welcome" - Déclarer un troisième tableau de caractères nommé
wordsans spécifier la taille, et laisser le C déterminer automatiquement la taille en l'initialisant avec "Programming" - Afficher les trois chaînes en utilisant
printfavec le spécificateur de format%s - Afficher la taille de chaque tableau en utilisant
sizeofpour démontrer la quantité de mémoire occupée par chaque tableau de caractères
Votre sortie doit afficher les résultats dans le format suivant :
greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12Ce défi teste votre compréhension de la déclaration des tableaux de caractères pour le stockage de chaînes, de la manière dont les chaînes littérales sont automatiquement terminées par un caractère nul lorsqu'elles sont assignées à des tableaux de caractères, et de la manière dont le C calcule automatiquement la taille des tableaux lorsque vous omettez la spécification de taille lors de l'initialisation.
Aide-mémoire
En C, les chaînes de caractères sont représentées comme des tableaux de caractères. Il n'y a pas de type de données de chaîne intégré.
Déclarez un tableau de caractères avec une taille spécifiée :
char greeting[6]; // Peut contenir 5 caractères + le terminateur
char message[20]; // Peut contenir jusqu'à 19 caractères + le terminateurInitialisez avec une chaîne littérale :
char greeting[6] = "Hello";
// Ceci stocke : 'H', 'e', 'l', 'l', 'o', plus un terminateur spécialLaissez le C déterminer automatiquement la taille du tableau :
char greeting[] = "Hello"; // Le C lui donne automatiquement la taille 6Affichez des chaînes en utilisant le spécificateur de format %s :
printf("%s", greeting);Obtenez la taille du tableau en utilisant sizeof :
sizeof(greeting) // Retourne le nombre total d'octets occupés par le tableauEssayez vous-même
#include <stdio.h>
int main() {
// À FAIRE : Écrivez votre code ici
// Déclarez et initialisez les tableaux de caractères comme spécifié dans le défi
// Affichez les chaînes et leurs tailles
printf("greeting: %s\n", greeting);
printf("message: %s\n", message);
printf("word: %s\n", word);
printf("Size of greeting: %lu\n", sizeof(greeting));
printf("Size of message: %lu\n", sizeof(message));
printf("Size of word: %lu\n", sizeof(word));
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 Logic & Flow
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înes