Programmer en langage C
148
© Éditions Eyrolles
Cela sera parfaitement équivalent à une initialisation de ch réalisée par une énumération de
caractères (en n’omettant pas le code zéro – noté \0) :
char ch[20] = { 'b','o','n','j','o','u','r','\0' }
N’oubliez pas que, dans ce dernier cas, les 12 caractères non initialisés explicitement seront :
●
soit initialisés à zéro (pour un tableau de classe statique) : on voit que, dans ce cas, l’omission du caractère \0 ne serait (ici) pas grave ;
●
soit aléatoires (pour un tableau de classe automatique) : dans ce cas, l’omission du caractère \0 serait nettement plus gênante.
De plus, comme le langage C autorise l’omission de la dimension d’un tableau lors de sa
déclaration, lorsqu’elle est accompagnée d’une initialisation, il est possible d’écrire une
instruction telle que :
char message[] = "bonjour" ;
Celle-ci réserve un tableau, nommé message, de 8 caractères (compte tenu du 0 de fin).
1.4 Initialisation de tableaux de pointeurs sur des chaînes
Nous avons vu qu’une chaîne constante était traduite par le compilateur en une adresse que
l’on pouvait, par exemple, affecter à un pointeur sur une chaîne. Cela peut se généraliser à un
tableau de pointeurs, comme dans :
char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche" } ;
Cette déclaration réalise donc à la fois la création des 7 chaînes constantes correspondant aux
7 jours de la semaine et l’initialisation du tableau jour avec les 7 adresses de ces 7 chaînes.
Voici un exemple employant cette déclaration (nous y avons fait appel, pour l’affichage d’une
chaîne, au code de format %s, dont nous reparlerons un peu plus loin) :
Initialisation d’un tableau de pointeurs sur des chaînes
main()
{ char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche" } ;
int i ;
printf ("donnez un entier entre 1 et 7 : ") ;
scanf ("%d", &i) ;
printf ("le jour numéro %d de la semaine est %s", i, jour[i-1] ) ;
}
donnez un entier entre 1 et 7 : 3
le jour numéro 3 de la semaine est mercredi
Delannoy Livre.book Page 148 Mercredi, 6. mai 2009 4:26 16
148
© Éditions Eyrolles
Cela sera parfaitement équivalent à une initialisation de ch réalisée par une énumération de
caractères (en n’omettant pas le code zéro – noté \0) :
char ch[20] = { 'b','o','n','j','o','u','r','\0' }
N’oubliez pas que, dans ce dernier cas, les 12 caractères non initialisés explicitement seront :
●
soit initialisés à zéro (pour un tableau de classe statique) : on voit que, dans ce cas, l’omission du caractère \0 ne serait (ici) pas grave ;
●
soit aléatoires (pour un tableau de classe automatique) : dans ce cas, l’omission du caractère \0 serait nettement plus gênante.
De plus, comme le langage C autorise l’omission de la dimension d’un tableau lors de sa
déclaration, lorsqu’elle est accompagnée d’une initialisation, il est possible d’écrire une
instruction telle que :
char message[] = "bonjour" ;
Celle-ci réserve un tableau, nommé message, de 8 caractères (compte tenu du 0 de fin).
1.4 Initialisation de tableaux de pointeurs sur des chaînes
Nous avons vu qu’une chaîne constante était traduite par le compilateur en une adresse que
l’on pouvait, par exemple, affecter à un pointeur sur une chaîne. Cela peut se généraliser à un
tableau de pointeurs, comme dans :
char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche" } ;
Cette déclaration réalise donc à la fois la création des 7 chaînes constantes correspondant aux
7 jours de la semaine et l’initialisation du tableau jour avec les 7 adresses de ces 7 chaînes.
Voici un exemple employant cette déclaration (nous y avons fait appel, pour l’affichage d’une
chaîne, au code de format %s, dont nous reparlerons un peu plus loin) :
Initialisation d’un tableau de pointeurs sur des chaînes
main()
{ char * jour[7] = { "lundi", "mardi", "mercredi", "jeudi",
"vendredi", "samedi", "dimanche" } ;
int i ;
printf ("donnez un entier entre 1 et 7 : ") ;
scanf ("%d", &i) ;
printf ("le jour numéro %d de la semaine est %s", i, jour[i-1] ) ;
}
donnez un entier entre 1 et 7 : 3
le jour numéro 3 de la semaine est mercredi
Delannoy Livre.book Page 148 Mercredi, 6. mai 2009 4:26 16
