Variable tableau dans une structure

annefrank -  
BreTzeL Messages postés 59 Statut Membre -
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

  1. monbobo Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   133
     
    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).
    0
  2. maily Messages postés 7560 Statut Contributeur 453
     
    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   :-))))
    0
  3. Nico
     
    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
    0
  4. léo
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. leo
     
    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.
    0
  7. BreTzeL Messages postés 59 Statut Membre 24
     
    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* )
    0