Comment déclarer un tableau de caractère (contient des caractère dans ses cases)
Résolu
SalimRT
Messages postés
15
Statut
Membre
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
En général qu'on doit faire pour déclarer un tab de caractere?
merci
merci
2 réponses
-
-
Salut SalimRT,
Tu as cet article sur CCM : https://www.commentcamarche.net/contents/118-langage-c-les-chaines-de-caracteres qui explique comment les chaînes de caractères fonctionnent en C.
1.
Dans ton message, tu demandes : "En général qu'on doit faire pour déclarer un tab de caractere?"
En général, pour juste déclarer un tableau dechar
, tu fais comme cela :char s[TAILLE];
. Si ce tableau dechar
doit accueillir une chaîne de caractères, il faut que TAILLE soit égale à la taille maximale de la chaîne + 1, car une chaîne de caractères en C est un tableau dechar
contenant les caractères de la chaîne et terminé par le caractère nul'\0'
, comme expliqué dans l'article.
Si ce tableau dechar
est déclaré dans main, comme il n'est pas initialisé à ce stade, il peut contenir n'importe quoi.
Après une telle déclaration, tu peux ensuite affecter des chaînes de caractères dans cet espace avecstrcpy()
ou d'autres fonctions disponibles dansstring.h
. Tu ne peux pas faires = "Bonjour";
...
2.
Dans ton titre tu demandes "Comment déclarer un tableau de caractère (contient des caractère dans ses cases)".
Si tu veux déclarer un tableau de char tout en l'initialisant avec une chaîne de caractères C donnée connue à la compilation, tu peux valablement utiliser le signe égal sur la même ligne que la déclaration. Par exemple de ces différentes façons :
char s1[256] = "Bonjour"; char s2[256] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; char s3[256] = { '\0' }; char s4[] = "Bonjour";s1
ets2
font exactement la même chose,s1
étant une version raccourcie, plus pratique. Dans les deux cas, le compilateur se charge d'initialiser l'espace de 256char
à partir de l'index 0 avec chacune des 7 lettres de"Bonjour"
(et dans le cas des2
avec le 8ème char indiqué'\0'
, soit le caractère nul), puis le compilateur initialise le reste de l'espace jusqu'au 256èmechar
avec le caractère nul'\0'
.
De façon similaires3
déclare un tableau de 256 char avec une chaîne "vide", en mettant le caractère nul'\0'
en première position. Comme aucun autre caractère n'est fournit à l'initialisation, le compilateur se charge aussi de remplir le reste du tableau du caractère nul'\0'
.
s4
est une autre version raccourcie, qui laisse le compilateur déterminer, lors de la compilation, la taille strictement nécessaire au stockage de la chaîne, donc ici 8char
(7 + 1).
Après ces différentes déclarations, tu peux modifier le contenu des chaîness1
,s2
,s3
ets4
, par exemple en y affectant autre chose avecstrcpy()
, mais tu ne pourras pas faire, par exemples4 = "Salut";
.
3.
Les chaînes de caractèress1
,s2
,s3
ets4
ont le type tableau dechar
.
En matière de chaînes de caractères, le C permet aussi de travailler avec des pointeurs sur char, pointant sur une zone mémoire allouée par le programme ou allouée au programme.
Mais comme ta question porte sur les tableaux, je m'arrêterai là :-)
Dal