Les chaînes de caractères en C

Convention pour les chaînes de caractères

Le langage C propose une gestion particulière pour des tableaux de caractères : la gestion C des chaînes de caractères.

Une suite de caractères adjacents est considérée comme une chaîne de caractères, si elle se termine par un caractère null correspondant à l'entier 0.

Le langage C propose une gestion de ces suites de caractères dans le but d'en faciliter l'utilisation. Les outils fournis à cette fin sont disponibles dans la bibliothèque standard C. On en trouve la description dans le fichier <string.h>.

Il existe également un format spécifique pour la lecture et l'écriture d'une chaîne de caractères : « %s ».

1
char chaine[16] ;
2
scanf("%15s", chaine) // permet de lire une chaîne de caractères d'au plus 15 caractères

Exemple

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

char ch[]= "bonjour" ; // tableau de 8 caractères

Accès aux caractères de la chaîne :

  int i ; /* indice utilisé pour parcourir les éléments du tableau */

  for (i = 0 ; i < size(ch) ; i++)   /* boucle pour le parcours de la chaîne */

  {

    printf("%c :\n",ch[i] );   /* chaque caractère de la chaîne est affiché */

  }

Tableau multidimensionnel

**Déclaration d'un tableau multidimensionnel

type nom_du_tableau [nombre_éléments1] [nombre_éléments2]...[nombre_élémentsn];

où :

  • type est un type de base (int, float, char, etc.),

  • nom_du_tableau permet d'identifier le tableau,

  • nombre_élémentsi représente le nombre d'éléments pour chacune des dimensions i du tableau (de 1 à n dimensions).

De la déclaration nous déduisons que :

  • Le type de la dimension n est type,

  • Le type des éléments de la dimension n-1 est un tableau unidirectionnel type[nombre_élémentsn],

  • Le type des éléments de la dimension n-i est un tableau multidirectionnel type[nombre_élémentsn-i]...[nombre_élémentsn].

**Accès aux données d'un tableau multidimensionnel

De même que pour un tableau unidimensionnel, l'accès à un tableau multidimensionnel se fait en utilisant des indices. Les indices successifs permettent d'accéder successivement à des tableaux de dimension réduite. Pour obtenir un élément de base (type), le nombre d'indices utilisés devra être égal au nombre de dimensions du tableau.

Exemple

int tableau[10][20] ; /* Déclare un tableau d'entiers de 10 éléments pour la dimension 1 et de 20 éléments pour la dimension 2 */

/* Accès aux éléments d'un tableau à deux dimensions : */

int i ; /*indice utilisé pour parcourir les lignes du tableau*/

int j ; /* indice utilisé pour calculer les colonnes du tableau*/

int tableau[10][20] ; /* déclare un tableau de 10 lignes et 20 colonnes*/

...

for (i = 0 ; i < 10 ; i++) /* boucle pour le parcours des lignes du tableau*/

for (j=0 ; j<20 ; j++) /*boucle pour le parcours des colonnes du tableau*/

{

  tableau[i][j] = 0 ; /* chaque case du tableau reçoit la valeur 0 */

}

/* tableau[i] désigne un tableau de 20 entiers */

Remarque

Un tableau peut être :

  • Statique : sa taille est déterminée à la déclaration,

  • Dynamique : sa taille est déterminée lors de l'exécution du programme.

On parle respectivement, pour le 1er ou le 2e cas, d'allocation statique ou d'allocation dynamique du tableau.

L'utilisation de cette dernière suppose l'emploi des pointeurs.