Variable tableau dans une structure

voici un programme:
#include <stdio.h>
main(void)
{
struct repertoire{
char tableau[5];
};

struct repertoire jean;
jean.tableau[5]= "lui";
printf ( "%s\n",jean.tableau);
printf("%c\n",jean.tableau[0]);
}
je veux que le programme affiche "lui" mais n'apparait que des caractères bizarroides quelque soit la méthode (dernière ligne ou avant-dernière ligne). où est mon erreur.
merci pour la réponse.

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Hé ben ouais tu peux po faire
    tableau[5]="lui";
    ça voudrait dire que tu veux écrire lui ds la 5ème case du tableau. Il
    faut faire
    jean.tableau="lui";
    ou faire un
    sizeof de "lui"
    g plus la synthaxe exacte pour que le programme définisse la taille de "lui", kil range ds un int je crois ensuite tu entre t valeurs ds ton tableau case par case avec une boucle... (une chaîne de caractère en C c aussi un tableau).
    1. Contributeur
      Bonjour
      Il faut que tu rentres dans le tableau les caractères un par un:

      jean.tableau[0]= 'l';
      
      jean.tableau[1]= 'u';
      jean.tableau[2]= 'i';
      jean.tableau[3]= '\0';


      Le dernier, c'est le caractère de fin de chaine!! Surtout ne jamais l'oublier....

      Maily   :-))))
      1. tu peus le faire directement de la maniere tableau[5]={"lui"}
        mais t'es limité à 5 carac
        utilise plutot les pointeurs
        char *tableau;

        et tu initialises, tu fais tableau=malloc(la_taille_de_ta_chaine)
        ex tableau=malloc(5)

        tu peux ainsi avoir dans un tab plusieur chaine de caractere
        char *tableau[5]
        tu as donc:
        tableau[0]=malloc(4)
        tableau[0]="lui"
        tableau[1]=malloc(10)
        tableau[1]="il etait ..."
        etc ...
        puis ton appelle de struct
        jean.tableau[1] ..... 2 3 4 etc ...

        A@++
        Puissance C
        1. je suis désolé nico mais çà ne marche pas que je fasse
          tableau[5]={"lui"} ou ="lui". dans le premier cas, il y a une erreur à la compilation (erreur de syntaxe) et dans le deuxième cas, j'ai des caractères bizarres qui s'affichent.
          1. je suis désolé monbobo, mais ta proposition (jean.tableau="lui";)
            ne marche pas. à la compilation, j'obtiens error C2106: '=' : left operand must be l-value.
            1. salut a tous!

              Personnelement, je ferais un petit #include <string.h> au debut et apres l'affectation devient simple :

              strcpy( repertoire.tableau, "lui");

              (a ce moment la, c plus simple de declarer tableau comme char* )