Initialisation d'un tableau en langage C

basopro Messages postés 130 Statut Membre -  
periplasme Messages postés 422 Statut Membre -
Bonjour, chers amis.
J'aimerais juste savoir s'il est possible d'initialiser un tableau (vecteur) de 6 cases et a type caractere de cette maniere.

{ char T[6]={a,e,i,o,u,y};
.
.
}

je sais qu cela est possible pour les "entiers" et pour les type caractere (char) ?

merci pour nvotre comprehension et je souhaite avoir une reponse de vous .
A voir également:

2 réponses

lefousdu05 Messages postés 33 Statut Membre 4
 
^^
1
basopro Messages postés 130 Statut Membre 1
 
mais mon IDE me demande de declarer les caractere qui sont dans l'accoade .pourtant ils sont tous declarés comme "char" ????
0
prypiat_child Messages postés 1500 Statut Membre 272
 
Il te dit certainement cela parce que tu n'as pas mis de quotes... regarde ma réponse^^
0
basopro Messages postés 130 Statut Membre 1
 
ok. je comprend merci, pour ton aide

    
0
prypiat_child Messages postés 1500 Statut Membre 272
 
Oui, mais pense à mettre des quotes : char T[6]={'a','e','i','o','u','y'};

il me semble qu'en initialisant comme ca d'ailleurs, tu n'es même pas obligé de noter la taille du tableau (mettre seulement char *t = {'a','e','i','o','u','y'} ou même char *t = "aeiouy" doivent farie la même chose mais à confirmer)
0
basopro Messages postés 130 Statut Membre 1
 
ok. Merci pour ton aide . thanks
0
prypiat_child Messages postés 1500 Statut Membre 272
 
De rien !^^ Marque "résolu" si c'est le cas ;-)
0
periplasme Messages postés 422 Statut Membre 53
 
"il me semble qu'en initialisant comme ca d'ailleurs, tu n'es même pas obligé de noter la taille du tableau (mettre seulement char *t = {'a','e','i','o','u','y'} ou même char *t = "aeiouy" doivent farie la même chose mais à confirmer) "

presque !

char t[]="aeiouy";

est valide,
mais *t contient l'adresse de t pas le contenu.
pour utiliser un pointeur :
*t = malloc(6*sizeof(char));
strcpy(t,"aeiouy");
0
prypiat_child Messages postés 1500 Statut Membre 272
 
merci d'avoir corrigé !^^ ca va m'éviter de rester coincé sur une erreur stupide quand je me remettrai au C !^^
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
@periplasme,

mais *t contient l'adresse de t pas le contenu.
pour utiliser un pointeur :
*t = malloc(6*sizeof(char));
strcpy(t,"aeiouy");

t=malloc(6...) et non *t...
N'oublie pas que "aeiouy" comporte 7 caractères et non 6. Il faut donc faire malloc(7) sinon tu récriras d'un byte dans le heap.

@tous,
char t[]="aeiouy"; est l'équivalent de char t[7]={'a','e','i','o','u','y'}; et non de char t[6]=...
La notion char t[]="..." prendra en compte le caractère terminal '\0'.

Cdlt,
0