Erreur de compilation [help]

Fermé
radagast35 Messages postés 2 Date d'inscription samedi 20 janvier 2007 Statut Membre Dernière intervention 22 février 2007 - 22 févr. 2007 à 14:41
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 22 févr. 2007 à 17:03
Slt,
je rencontre une erreur de compilation en C, pouvez vous m'aider SVP???

typedef
struct
{
char Nom [26];
char GrTP;
char GrTD;
float Note;
}
TEtudiant;

void ChargerTab (TEtudiant pEtu, int pNb, FILE * pDesc)
{
fread (&pEtu[pNb], sizeof (TEtudiant), 1, pDesc);
while (!feof(pDesc))
{
++pNb;
fread (&pEtu[pNb], sizeof (TEtudiant), 1, pDesc);
}//while
fclose (pDesc);
}//ChargerTab

Erreur:
TP1_3.cpp: In function `void ChargerTab(TEtudiant, int, FILE*)':
TP1_3.cpp:54: no match for `TEtudiant& [int&]' operator
TP1_3.cpp:58: no match for `TEtudiant& [int&]' operator

Pitié je désespère!!!! HELP ME!!!

1 réponse

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
22 févr. 2007 à 17:03
&pEtu[pNb] !!!!
Houla que c'est moche !
Dans ta fonction ChargerTab tu passe la première variable par copie. Donc même si ça compilait, je doute fort que ton programme ferai ce que tu veux, si tu t'en tire par hasard sans erreur de mémoire.
Si tu veu passser un tableau de TEtudiant il faut faire :
void ChargerTab (TEtudiant[] pEtu, int pNb, FILE * pDesc)
ou void ChargerTab (TEtudiant* pEtu, int pNb, FILE * pDesc).
ce que tu fait peu marcher à condition que tu mette void ChargerTab (TEtudiant& pEtu, int pNb, FILE * pDesc) Mais je ne te le conseil pas.
Je ne sais pas si ta fonction est complete, mais ATTENTION à l'allocation mémoire ! tu ne connait pas a priori la taille qui va être lu.
Si &pEtu[Np] ne fonctionne pas, c'est peut être aussi à cause de la précéance des opérateur, (&pEtu)[Np] fonctionnerai peut être.
0