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 ».
char chaine[16] ;
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.