LES CHAÎNES DE CARACTÈRES
Les chaînes de caractères en C est un cours pas évident. En général ce genre de cours s'explique au centre d'un bouquin car des difficultés interviennent (mémoire, pointeurs, ...), mais je me vois pas expliquer le C sans taper du texte dans nos code.
Mémoire? Pointeurs? On s'en fou dans ce cours, tout cela n'interviendra pas, je vais simplifier au maximum. Vous verrez que l'on peut expliquer des choses complexes en faisant simple.
Rappel
Souvenez-vous du tableau des types cours n°1...
tableau_types.gif
On avait vu que pour coder un tableau de flottants en C, il suffisait de rajouter des crochets [n], n représentant le nombre de flottants dans le tableau.
Code:
float tableau[6] /* Déclaration */; tableau[0] = ...; /* Assignation */ tableau[1] = ...; /* suite jusqu'à l'indice 5 */
Code:
float tableau[6] = {12.5, ..., ...}; /* Déclaration + Assignation */
Code:
float tableau[] = {12.5, ..., ...}; /* Déclaration + Assignation de nombre de flottants que l'on veut /*
Pourquoi ce rappel ?
Pourquoi présenter des flottants, alors que le cours est censé parler des chaînes de caractères ?
Réponse: Une chaîne de caractères est un ensemble de caractères séparés. En C, on représente cela comme un tableau de caractères.
Vous commencez à voir le rapprochement ? Oui, un tableau de flottants ou un tableau de caractères, ça se déclare de la même façon !
Code:
char chaine[] = "Hello World !";
Code:
char chaine[14] = "Hello World !";
Code:
char chaine[14]; /* Déclaration */ chaine[0] = 'H'; chaine[1] = 'e'; chaine[...] = '...'; chaine[13] = '\0';
Oui mais avant on l'a pas mis, pourquoi juste dans ce cas ? Car le compilateur dans les autres cas, va le gérer et le placer en fin de chaîne pour nous.
Ok, ok c'est pour cela que tu as mis 14 caractères au lieu de 13 ? Oui tout à fait !
La vision schématique des chaînes
Je vous l'ai dis une chaîne de caractères est considéré comme un tableau de caractères. Imaginons que l'on veuille écrire la chaîne "Hello", ça sera vu de la façon ci-dessous.
hello.gif
Syntaxe entre caractère et caractères
Un caractère est de type char
Des caractères est de type char[] (tableau de caractères)
Pour un caractère on utilisera les ' ', pour le tableau de caractères on utilisera les " ", vous voyez la subtilité? Voici un exemple ci-dessous
Code:
char letter = 'a'; /* Déclaration et assignation à la variable letter du caractère a */ char chaine[] = "Hello World !";
Imaginons que l'on veuille transformer la 1ère lettre d'une chaîne de minuscule en majuscule. À la base notre chaîne sera codée de cette façon.
Code:
char chaine[] = "hello";
Souvenez-vous ! C'est un tableau, on travaille donc avec les indices d'un tableau. Celui qui nous intéresse et l'indice 0. L'indice 0 représente le 'h' de "hello".
Pour assigner une nouvelle valeur à la lettre 'h', on va utiliser l'opérateur = .
Code:
char chaine[] = "hello"; chaine[0] = 'H'; /* on remplace l'ancienne valeur 'h' par la nouvelle valeur 'H' dans le tableau à l'indice 0 /*
Afficher une tableau de caractères
Pour faire cela on utilisera une fonction qu'on admettra sans comprendre pour l'instant, car si je devais expliquer je parlerais de notions trop complexes pour des débutants en C, la fonction puts.
Voici un exemple très simple
Code:
#include <stdio.h> int main(void) { char tab[] = "Bonjour"; puts(tab); return 0; }
EXERCICES
Exercice n°1
Compléter le code ci-dessous, l'objectif étant de corriger une faute d'orthographe et de l'afficher en console (avec puts).
Code:
#include <stdio.h> int main(void) { char tab[] = "Mécontant"; /* Suite du code à compléter */ /* Fin du code complété */ return 0; }
On veut transformer un nom au pluriel en un même nom au singulier (faut retirer le 's'), compléter le code suivant. N'oubliez pas d'afficher en console avec puts.
Code:
#include <stdio.h> int main(void) { char tab[] = "Livres"; /* Suite du code à compléter */ /* Fin du code complété */ return 0; }
Commentaire