Problème avec les tableaux de pointeurs
Bonjour tout le monde,
je suis en train de faire une fonction qui a pour but de charger des informations contenues dans un fichier dans un tableau de pointeurs.
Voila la forme du fichier :
Citation:
ALBERT Rachel 16.5
BENOIT Alexis 8
DURAND Pierre 18
LAURENT Charles 10
J'ai donc fait ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
typedef struct
{
char nom[50], prenom[50];
float moyenne;
} Etudiant;
int chargeTPointEtud(Etudiant *tpetud[], int nbmax)
{
FILE *fichier = NULL;
Etudiant *etud;
int i=1;
fichier = fopen("etudalpha.don", "r");
if (fichier == NULL)
exit(1);
etud = (Etudiant*) malloc(nbmax * sizeof(Etudiant));
fscanf(fichier, "%s%s%f", etud[0]->nom, etud[0]->prenom, &etud[0]->moyenne);
tpetud[0] = etud[0];
while (feof(fichier) == 0)
{
fscanf(fichier, "%s%s%f", etud[i]->nom, etud[i]->prenom, &etud[i]->moyenne);
tpetud[i] = etud[i];
i++;
}
fclose(fichier);
return i;
} |
Et là je rencontre plusieurs problèmes :
1) le compilateur me dit : invalid type argument of `->'
J'ai donc remplacé le symbole -> par le symbole .
Ca enlève l'erreur, mais je comprends pas pourquoi : étant donné que etud[0] contient une adresse, on doit mettre la flèche non ?
2) après avoir remplacé les flêches par les points, j'ai une autre erreur : incompatible types in assignment
pour ces lignes :
Code:
tpetud[0] = etud[0];
et
Code:
tpetud[i] = etud[i];
la non plus je ne comprends pas : tpetud[0] attends une adresse (puisque c'est un tableau de pointeur) et etud[0] est l'adresse de ma structure (si je me souvient bien)
merci d'avance pour vos éclaircissements :)