Leçon 30 : Introduction aux chaînes de caractères (Tableaux de caractères)
En C, il n'y a pas de type String intégré. Une chaîne de caractères est définie comme un tableau de caractères à une dimension, terminé par un caractère spécial nul (\0).
Le caractère de fin de chaîne (\0)
Le caractère nul signale la fin de la chaîne. Les fonctions qui traitent les chaînes (comme printf avec %s) comptent sur ce terminateur pour s'arrêter.
Déclaration et initialisation de chaînes
1. Initialisation manuelle d'un tableau de caractères
Nous devons explicitement inclure le caractère nul.
c char nom[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; // Nécessite une taille de 6 pour 5 caractères + le caractère nul
2. Initialisation par littéral de chaîne (Recommandé)
L'utilisation de guillemets doubles ajoute automatiquement le caractère nul (\0).
c char salutation[] = "Hello"; // Le compilateur calcule une taille de 6
// Si nous définissons la taille explicitement, assurez-vous qu'elle soit suffisante : char ville[10] = "Paris"; // Taille 10 allouée, 'Paris' en occupe 6 (5 + \0)
Lecture de chaînes de caractères
Utilisation de scanf()
scanf() s'arrête de lire lorsqu'il rencontre un espace blanc (espace, tabulation, saut de ligne). Notez que nous n'utilisons pas l'opérateur & avec un nom de tableau.
c char prenom[20]; printf("Entrez votre prénom : "); scanf("%s", prenom); // Ne lit qu'un seul mot
Utilisation de fgets() (Recommandé pour la sécurité)
fgets() est plus sûr car il évite les dépassements de tampon (buffer overflows) en vous permettant de spécifier la taille maximale. Il lit jusqu'à un saut de ligne ou jusqu'à la limite de taille.
c char nom_complet[50]; printf("Entrez votre nom complet : "); // Lit jusqu'à 49 caractères depuis stdin et les stocke dans nom_complet fgets(nom_complet, 50, stdin);