7.Chaînes de caractères

7-1. Définition

Une chaîne de caractères est un tableau de char contenant un caractère nul. Le caractère nul a 0 pour code ASCII et s'écrit: \'0'. Les variables significatives de la chaîne de caractères sont toutes celles placées avant le caractère nul. On remarque donc que si le caractère nul est en première position, on a une chaîne de caractères vide. Par exemple, la phrase "Pascal" sera codée de la sorte:

'P' 'a' 's' 'c' 'a' 'l' \'0' ...

7-2. Déclaration

Comme une chaîne de caractères est un tableau de char, on le déclare comme suit:

char nom_chaine[taille_chaine];

Exemple de déclaration d'une chaîne de caractères

char c[20];

Attention!

Le nombre maximal de lettres qu'il sera possible de placer dans la chaîne ne sera pas certainement 20 mais 19, car il faut placer après le dernier caractère de la chaîne un caractère nul!

7-3. Initialisation

On initialise une chaîne à la déclaration, et seulement à la déclaration, et cela se fait de la sorte:

char nom_chaine[taille_chaine]="valeur";

Exemple d'initialisation d'une chaîne

char c[10]="Gaston";

Cette instruction déclare une chaîne de caractère à "Gaston". Les 7 premiers des 10 éléments du tableau seront occupés par les 6 caractères de la chaîne ainsi que par le caractère nul, les autres contiendront des valeurs non significatives.

Observez bien l'exemple suivant:

char c[5]="Tolno";

Cette déclaration engendrera un warning (avertissement) à la compilation et probablement une erreur à l'exécution car l'affectation du caractère nul à la 6ème position du tableau donnera lieu à un débordement d'indice.

7-4. Affichage

Il existe deux méthodes pour afficher une chaîne de caractères.

Première méthode:

Tout comme pour les tableaux, nous pouvons utilser une boucle pour afficher une chaîne de caractères. (Voir figure)

#include < stdio.h >
main()
{
int i = 0;
char c[10]="Pascal";
  printf("Vous avez saisi: ");
while(c[i]!='\0')
  {
   printf("%c",c[i]);
   i++ ;
  }
}

Résultat

Deuxième méthode:

Cette seconde méthode est très simple. Il suffit d'utiliser printf avec la chaîne de format %s.

#include < stdio.h >
main()
{
char c[10]="Pascal";
  printf("Vous avez saisi: %s", c);
}

Résultat

Par contre soyez attentif au fait que si votre chaîne ne contient pas de caractère nul ou que le caractère nul se trouve en déhors de la plage d'indice de votre chaîne, il faudra vous attendre aux pires horreurs à l'exécution!