|
|
|
|
Voila le "problème" :
Je veux charger les données à partir d'un fichier séquentiel dans un tableau de structures que j'ai alloué dynamiquement (malloc).
Voici ma fonctiond e chargement :
void chargement(struct s_dvd **ppt) //recoit un ptr de ptr afin de pouvoir travailler sur la structure dans le main
{
struct s_dvd dvd,*ptr; //s_dvd = ma structure définie en global
FILE *file;
file=fopen("dvd.txt","r");
if(file==NULL)
{
erreur(1); //affichage d'une erreur
}
else
{
*ppt=(struct s_dvd *)malloc(((ftell(file))/sizeof(struct s_dvd))*sizeof(struct s_dvd)); //allocation dynamique du tableau de structures
if (*ppt==NULL)
{
erreur(2);
}
else
{
ptr=*ppt; // ptr va pointer sur le debut de structure et va etre utilisé pr le chargement - *ppt ne bouge pas.
fseek(file,0,0);
while((fread(&dvd,sizeof(struct s_dvd),1,file))==1)
{
ptr->dvd_num=dvd.dvd_num;
ptr->dvd_titre=dvd.dvd_titre;
ptr->dvd_annee=dvd.dvd_annee;
ptr->dvd_realisateur=dvd.dvd_realisateur;
ptr->dvd_acteur[1].acteur_nom=dvd.dvd_acteur[1].acteur_nom;
ptr->dvd_acteur[1].acteur_prenom=dvd.dvd_acteur[1].acteur_prenom;
ptr->dvd_acteur[2].acteur_nom=dvd.dvd_acteur[2].acteur_nom;
ptr->dvd_acteur[2].acteur_prenom=dvd.dvd_acteur[2].acteur_prenom;
ptr->dvd_acteur[3].acteur_nom=dvd.dvd_acteur[3].acteur_nom;
ptr->dvd_acteur[3].acteur_prenom=dvd.dvd_acteur[3].acteur_prenom;
ptr->dvd_code=dvd.dvd_code;
ptr->dvd_duree=dvd.dvd_duree;
ptr++;
}
}
}
}
L'erreur : concerne toutes les données de type char[] : error C2106: '=' : left operand must be l-value
Si je commente les lignes concernées le chargement se fait correctement pr les int.
Que dois je modifier ?
Merci
Fais un essai en remplacant les affectations sur le char[] par
strcpy(ptr->dvd_acteur[0].acteur_nom, "nom acteur"); En faisant gaffe à ce que la destination soit capable d'accèpter le nombre de caractère contenus dans la source ;-) Sinon il y a la fonction strncpy qui prend un taille max en paramètre. A++ C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison! (COLUCHE) |
J'ai changé ma boucle while de ma focntion en ceci :
|
- As-tu vérifié le format des données dans le fichier que tu vas lire ?
|
Le format des données est correct, c'est moi qui écris dans le meme programme via une autre fonction, et une "bête" lecture séquentielle ne pose aucun problème.
|