Langage C Remplir Un Tableau De Char

Ah, le C ! Ce langage un peu rustique, un peu vintage, mais tellement puissant. Vous savez, la dernière fois que j'ai dû remplir un tableau de caractères en C, je me suis rappelé une anecdote. C'était il y a… euh, disons il y a un moment ! J'étais jeune, plein d'entrain, et je voulais afficher un message rigolo à l'écran. Un simple "Bonjour le monde !", mais en C. Le truc, c'est que mon cerveau, habitué aux langages plus… disons, modernes, a eu un petit bug. J'ai tapé char message[] = "Bonjour le monde!";, et là, crash ! Enfin, pas un vrai crash, mais mon compilateur m'a gentiment signalé une erreur. Panique à bord ! Pourquoi ? Qu'est-ce que j'avais fait de mal ?
C'est là qu'on réalise à quel point le C aime être… explicite. Il ne fait pas de suppositions pour vous. Alors, comment on s'en sort quand on veut mettre des lettres dans une boîte en C ? C'est notre mission du jour !
La magie des tableaux de caractères en C
En fait, en C, quand on parle de "tableau de caractères", on pense souvent à une chaîne de caractères. C'est un peu la même idée, mais avec quelques subtilités. Pour déclarer un tableau de caractères, c'est assez simple. Vous utilisez le type char, suivi du nom de votre tableau, et entre crochets, vous précisez sa taille. Par exemple :
char mon_tableau[10];
Là, on a créé une boîte capable de contenir 10 caractères. Facile, non ? Mais attention, cette boîte est vide pour l'instant. Elle ne contient rien de fiable. C'est un peu comme une maison vide : il faut y mettre les meubles soi-même !
Remplir ce tableau : plusieurs écoles !
Maintenant, la question qui tue : comment on met des choses dedans ? Il y a plusieurs façons, et chacune a son petit charme (ou sa petite complication, c'est selon !).
Méthode 1 : L'initialisation directe
La manière la plus simple, et celle qui m'a jouée des tours au début, c'est l'initialisation lors de la déclaration. Vous pouvez directement mettre ce que vous voulez entre accolades :
char salutation[] = {'H', 'e', 'l', 'l', 'o'};
Ou, encore plus simple pour les chaînes de caractères (et c'est là que mon problème initial est né) :

char message_secret[] = "C'est magique!";
Vous voyez ? La première fois, j'avais oublié le double guillemet et ça avait fait planter mon truc. Le C est très pointilleux avec la syntaxe. N'oubliez jamais ces guillemets pour les chaînes de caractères ! Et sachez que le compilateur ajoute automatiquement un caractère spécial à la fin : le caractère nul (\0). C'est lui qui dit "c'est la fin de la chaîne, arrête de lire !". Essentiel pour beaucoup de fonctions C.
Méthode 2 : L'affectation caractère par caractère
Si votre tableau est déjà déclaré et que vous voulez le remplir après, vous pouvez le faire un par un. C'est un peu plus laborieux, mais ça vous donne un contrôle total.
char ma_phrase[20];
ma_phrase[0] = 'P';
ma_phrase[1] = 'o';

ma_phrase[2] = 'u';
Et ainsi de suite. N'oubliez pas le caractère nul à la fin si vous voulez le traiter comme une chaîne de caractères :
ma_phrase[19] = '\0'; (attention à ne pas dépasser la taille !)
C'est là que les boucles deviennent vos meilleures amies. On y reviendra peut-être une autre fois, car ça ouvre tout un monde !
Méthode 3 : La fonction strcpy (ou autres)
Pour les plus pressés, il existe des fonctions qui copient des chaînes entières dans un tableau. La plus connue est strcpy(). Mais attention, celle-ci est dangereuse si la chaîne source est plus longue que le tableau de destination ! Vous pourriez écraser la mémoire juste à côté. Il existe des versions plus sûres comme strncpy() ou snprintf(). C'est le genre de choses qui font frémir les développeurs C expérimentés, et vous avez bien raison d'y prêter attention !
Voilà, j'espère que ça éclaire un peu votre lanterne sur le remplissage des tableaux de caractères en C. Ce n'est pas si compliqué, il faut juste respecter sa logique. Et vous, quelle est votre astuce préférée pour gérer ces petites boîtes de lettres ?
Gallery
