Bonjour!
J'ai un petit problème pour écrire et lire dans un fichier sous Linux.
J'ai une fonction qui initialise un index.
Si le fichier index.dat existe, il le charge dans un tableau en mémoire, sinon il crée le fichier index.dat a partir d'un fichier de données.
A la première exécution, je crée mon fichier index et j'écris mon tableau d'index dedans.
Je ferme mon fichier et je lis les données pour vérifier, tout est ok, elles sont affichées correctement.
Mais ensuite, je quitte mon programme et je le relance.
Mon programme passe donc par l'autre condition (le fichier index existe, on le charge donc en mémoire).
Et la, en lisant EXACTEMENT le même code de lecture du fichier, il affiche n'importe quoi!
Voici le code :
Code :
- // Ecriture dans le fichier index.dat
- // debIndex étant le pointeur de mon tableau d'index
- // tmp étant le malloc d'une structure
- while(debIndex->Pos!=-1)
- {
- tmp->Pos=debIndex->Pos;
- strcpy(tmp->Element,debIndex->Element);
- write(FichInd.hdIndex,tmp,TailleEnreg);
- debIndex++;
- }
- close(FichInd.hdIndex);
- FichInd.hdIndex=open("Index.dat",O_RDWR);
- // Lecture
- go=1;
- while(go==1)
- {
- // Si c'est la fin du fichier
- if(read(FichInd.hdIndex,tmp,TailleEnreg)!=TailleEnreg)
- go=0;
- // On enregistre dans le tableau d'index
- else
- {
- printf("%s -- %d",tmp->Element,tmp->Pos);
- Pause();
- debIndex->Pos=tmp->Pos;
- strcpy(debIndex->Element,tmp->Element);
- debIndex++;
- }
- }
|
Donc ce code ci marche parfaitement. Mais lorsque je relance le programme et que je n'effectue que la lecture, il bloque dans la boucle car il ne passe jamais par cette condition
if(read(FichInd.hdIndex,tmp,TailleEnreg)!=TailleEnreg)
go=0;
Et il m'affiche des 0 pour Pos et rien pour Element.
Merci d'avance pour votre aide.