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.
A voir également:

7 réponses

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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
leo
 
?????
0
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