Initialisation d'un tableau en langage C

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 .

2 réponses

  1. ^^
    1. mais mon IDE me demande de declarer les caractere qui sont dans l'accoade .pourtant ils sont tous declarés comme "char" ????
    2. Il te dit certainement cela parce que tu n'as pas mis de quotes... regarde ma réponse^^
    3. ok. je comprend merci, pour ton aide
  2. 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)
    1. ok. Merci pour ton aide . thanks
    2. De rien !^^ Marque "résolu" si c'est le cas ;-)
    3. "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");
      
    4. merci d'avoir corrigé !^^ ca va m'éviter de rester coincé sur une erreur stupide quand je me remettrai au C !^^
    5. Contributeur
      @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,