Bonsoir à tous et à toutes !
Cela fait maintenant plusieurs heures que je cherche une solution à mon problème.. Et je commence à en avoir un tout petit peu marre Je viens donc vous demander un peu de votre temps pour m'aider à résoudre mon problème ! Ce serait vraiment super sympa
Bon, alors, j'essaye d'implémenter une fonction qui me permettra d'indexer mon fichier dans la RAM. La voici :
Mon problème se déroule à partir de la ligne 24, avec le while(!feof..). Je ne comprends pas pourquoi, peu importe le nombre d'enregistrements que j'ai dans mon fichier, après le fread il considère qu'il est à la fin du fichier et ne passe donc pas par le while ! J'ai bien vérifié ma fonction d'ajout, si je ne me trompais pas de fichier ni rien. Tout se passe correctement.. Mais ce foutu fread... Je ne comprends vraiment pas ce qui se passe :'(
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42 void Indexation(Index *pIx){ FILE *fp; Joueurs *Jr; short i = 0; fp = fopen(FILE_NAME_JOUEURS, "rb"); Jr = (Joueurs *) malloc (sizeof(Joueurs)); if(fp == (FILE *) NULL) { printf("Erreur d'ouverture du fichier !\n"); printf ("Code de l'erreur : %d\n", errno); printf ("La signification de l'erreur est donc : %s\n", strerror(errno)); } else { fread(&Jr, sizeof(Joueurs), 1, fp); while(!feof(fp) && i < MAXIND) { pIx->IdJoueur = Jr.IdJoueur; strcpy(pIx->Nom, Jr.Nom); pIx->indice = ftell(fp) - sizeof(Joueurs); fread(&Jr, sizeof(Joueurs), 1, fp); pIx++; i++; } } fclose(fp); free(Jr); }
Quelqu'un pour éclairer ma lanterne ?
Merci ! Bonne soirée !
Partager