Tableau de chaînes en C

Bonjour à tous, futurs programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de la programmation C, en explorant spécifiquement le concept de Tableau de Chaînes. Ne vous inquiétez pas si vous êtes complètement nouveau à la programmation ; je vais vous guider à travers chaque étape avec le même soin et la même patience que j'utilise dans ma classe depuis des années. Alors, plongeons dedans !

C - Array of Strings

Qu'est-ce qu'un Tableau de Chaînes en C ?

Imaginez que vous organiser un étagère de livres. Chaque étagère peut contenir plusieurs livres, n'est-ce pas ? En programmation C, un Tableau de Chaînes fonctionne de manière similaire. C'est comme une collection d'étagères (le tableau) où chaque étagère contient un livre (une chaîne).

En termes techniques, un Tableau de Chaînes en C est un tableau bidimensionnel de caractères. C'est un moyen de stocker plusieurs chaînes dans une seule variable. Chaque chaîne dans ce tableau est essentiellement un tableau unidimensionnel de caractères.

Reprenons avec une simple analogie :

  • Si une chaîne est comme un mot, alors un tableau de chaînes est comme une phrase.
  • Si une chaîne est comme un titre de livre unique, alors un tableau de chaînes est comme un catalogue de titres de livres.

Déclarer et Initialiser un Tableau de Chaînes

Maintenant, apprenons à créer notre "étagère" en C. Voici comment déclarer et initialiser un tableau de chaînes :

char books[3][20] = {
"C Programming",
"Python Basics",
"Java for Beginners"
};

Dans cet exemple :

  • books est le nom de notre tableau
  • [3] indique que nous stockons 3 chaînes
  • [20] signifie que chaque chaîne peut contenir jusqu'à 20 caractères
  • Nous l'avons initialisé avec trois titres de livres

Souvenez-vous, en C, les chaînes sont toujours terminées par un caractère nul '\0', assurez-vous donc de prévoir suffisamment d'espace !

Afficher un Tableau de Chaînes

Maintenant que nous avons notre étagère, apprenons à afficher son contenu. Nous pouvons utiliser une boucle simple pour imprimer chaque chaîne :

#include <stdio.h>

int main() {
char books[3][20] = {
"C Programming",
"Python Basics",
"Java for Beginners"
};

for(int i = 0; i < 3; i++) {
printf("%s\n", books[i]);
}

return 0;
}

Ce code affichera :

C Programming
Python Basics
Java for Beginners

Ici, books[i] nous donne la i-ème chaîne dans notre tableau. Le spécificateur de format %s indique à printf d'attendre une chaîne.

Comment un Tableau de Chaînes est Stocké en Mémoire ?

Maintenant, penchons-nous sous le rideau et voyons comment notre étagère est vraiment organisée dans la mémoire de l'ordinateur.

Un tableau de chaînes en C est stocké comme un bloc de mémoire contigu. Chaque chaîne occupe une quantité fixe d'espace (dans notre exemple, 20 caractères), indépendamment de sa longueur réelle.

Voici une représentation visuelle :

Adresse de Mémoire | Contenu
------------------|-----------------
0x1000            | C Programming\0...
0x1014            | Python Basics\0...
0x1028            | Java for Beginners\0

Chaque ligne représente une chaîne, et elles sont stockées les unes après les autres en mémoire.

Un Tableau de Chaînes avec des Pointeurs

En progressant dans C, vous rencontrerez une méthode plus flexible pour créer un tableau de chaînes en utilisant des pointeurs :

char *books[] = {
"C Programming",
"Python Basics",
"Java for Beginners"
};

Cette méthode permet des chaînes de longueurs différentes, car chaque élément de books est un pointeur vers une chaîne, plutôt qu'un tableau de taille fixe.

Trouver la Chaîne la Plus Longue

Mettons nos connaissances en pratique avec un exemple pratique. Voici un programme pour trouver la chaîne la plus longue dans notre tableau :

#include <stdio.h>
#include <string.h>

int main() {
char *books[] = {
"C Programming",
"Python Basics",
"Java for Beginners"
};
int n = sizeof(books) / sizeof(books[0]);
int max_length = 0;
char *longest_book = NULL;

for(int i = 0; i < n; i++) {
int length = strlen(books[i]);
if(length > max_length) {
max_length = length;
longest_book = books[i];
}
}

printf("Le titre du livre le plus long est : %s\n", longest_book);
return 0;
}

Ce programme affichera :

Le titre du livre le plus long est : Java for Beginners

Trier un Tableau de Chaînes par Ordre Croissant

Enfin, essayons de trier notre tableau de chaînes par ordre alphabétique :

#include <stdio.h>
#include <string.h>

int main() {
char *books[] = {
"C Programming",
"Python Basics",
"Java for Beginners"
};
int n = sizeof(books) / sizeof(books[0]);

for(int i = 0; i < n-1; i++) {
for(int j = i+1; j < n; j++) {
if(strcmp(books[i], books[j]) > 0) {
char *temp = books[i];
books[i] = books[j];
books[j] = temp;
}
}
}

printf("Titres de livres triés :\n");
for(int i = 0; i < n; i++) {
printf("%s\n", books[i]);
}

return 0;
}

Cela affichera :

Titres de livres triés :
C Programming
Java for Beginners
Python Basics

Nous avons utilisé l'algorithme de tri à bulles ici, en comparant les chaînes adjacentes avec strcmp() et en les échangeant si elles sont dans le mauvais ordre.

Et voilà ! Nous avons exploré le monde des Tableaux de Chaînes en C, des concepts de base aux applications pratiques. Souvenez-vous, la programmation est comme apprendre une nouvelle langue - cela nécessite de la pratique et de la patience. Ne soyez pas découragé si vous ne comprenez pas tout d'un coup. Continuez à coder, continuez à expérimenter, et surtout, continuez à vous amuser !

Méthode Description
strlen() Calcule la longueur d'une chaîne
strcmp() Compare deux chaînes
strcpy() Copie une chaîne dans une autre
strcat() Concatène deux chaînes
strtok() Divise une chaîne en jetons

Ces fonctions de manipulation de chaînes seront vos meilleures amies alors que vous continuerez votre parcours en programmation C. Bonne programmation !

Credits: Image by storyset