Comment déclarer un tableau de caractère (contient des caractère dans ses cases)

Résolu/Fermé
SalimRT Messages postés 14 Date d'inscription lundi 31 décembre 2018 Statut Membre Dernière intervention 24 février 2019 - 9 janv. 2019 à 00:16
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 9 janv. 2019 à 13:23
En général qu'on doit faire pour déclarer un tab de caractere?
merci
A voir également:

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
9 janv. 2019 à 08:15
Bonjour

La réponse est là https://www.qwant.com/?q=C+declarer+tabelau

1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 9 janv. 2019 à 13:26
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 de
char
, tu fais comme cela :
char s[TAILLE];
. Si ce tableau de
char
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 de
char
contenant les caractères de la chaîne et terminé par le caractère nul
'\0'
, comme expliqué dans l'article.

Si ce tableau de
char
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 avec
strcpy()
ou d'autres fonctions disponibles dans
string.h
. Tu ne peux pas faire
s = "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
et
s2
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 256
char
à partir de l'index 0 avec chacune des 7 lettres de
"Bonjour"
(et dans le cas de
s2
avec le 8ème char indiqué
'\0'
, soit le caractère nul), puis le compilateur initialise le reste de l'espace jusqu'au 256ème
char
avec le caractère nul
'\0'
.

De façon similaire
s3
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 8
char
(7 + 1).

Après ces différentes déclarations, tu peux modifier le contenu des chaînes
s1
,
s2
,
s3
et
s4
, par exemple en y affectant autre chose avec
strcpy()
, mais tu ne pourras pas faire, par exemple
s4 = "Salut";
.

3.

Les chaînes de caractères
s1
,
s2
,
s3
et
s4
ont le type tableau de
char
.

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
1