Bonjour à tous
J'ai un petit bug que j'ai réussi à résoudre de maniéré étrange. J'aimerais donc votre avis sur la situation.
J'ai fichier que j'ouvre en mode rb+:
Et je stocke dans ce fichier des instances de ma structure Reponse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part repF=fopen("reponse.dat","rb+");
Et un moment dans mon code je modifie toutes les réponses qui sont dans le fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Reponse reponse; reponse.phrase="blabla"; reponse.occurences=777; fseek(repF,0,SEEK_END); fwrite(&reponse,sizeof(Reponse),1,repF);
Et si je ne mets pas c'est deux lignes:
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 Reponse reponse; fseek(file,0,SEEK_END); int taille=ftell(repF); fseek(repF,0,SEEK_SET); while(ftell(repF)<taille) { fread(&reponse,sizeof(Reponse),1,repF); reponse.occurences=0; fseek(repF,-sizeof(Reponse),SEEK_CUR); fwrite(&reponse,sizeof(Reponse),1,repF); int sauv=ftell(repF); // Voici les 2 lignes qui empêchent le bug fseek(repF,sauv,SEEK_SET); // }
ben les deux premières réponses du fichier sont correctement modifiés mais toutes les suivantes sont remplacé par la 2eme réponse.int sauv=ftell(repF); // Voici les 2 lignes qui empêchent le bug
fseek(repF,sauv,SEEK_SET); //
Vous avez un soupçon d'idée ?
Merci d'avance et bonnes fêtes![]()
Partager