Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1376 connectés 

  FORUM HardWare.fr
  Programmation
  C

  pb de lecture dansun fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de lecture dansun fichier

n°680695
mbibim
Posté le 22-03-2004 à 22:22:05  profilanswer
 

salut
 
j'ai un pb de doublon à l'affichage. voila mon code :
 
FILE * fic ;
tCD leTab;
 
fic = fopen ("CDs.dat", "r" );
while (!feof(fic)){
 
fread(&leTab, sizeof (tCD),1,fic);
cout<<"L'identifiant du CD est :" << leTab.IdCD<<"\n";
cout<<"Le titre du CD est : " << leTab.Titre <<"\n";
cout<<"La date de sortie du CD est :"<<leTab.dateSortie<<"\n";
cout<<"Le commentaire sur le CD est :"<<leTab.commentaire<<"\n";
cout << " \n";

 
et donc si j'appelle cette fonction sur un fichier qui contient un seul enregistrement de ce type (le fichier est correct j'ai vérifié), il m'en affiche deux à la suite avant de quitter cette fonction. On dirait qu'il vapte mal la fin de fichier.
 
Si vous avez une suggestion.
merci beaucoup.

mood
Publicité
Posté le 22-03-2004 à 22:22:05  profilanswer
 

n°680701
jagstang
Pa Capona ಠ_ಠ
Posté le 22-03-2004 à 22:24:23  profilanswer
 

logique. while (!feof(fic)) est true car tu fais fread dans la première instruction. fais une trace ça te paraitras logique

n°680710
Taz
bisounours-codeur
Posté le 22-03-2004 à 22:27:53  profilanswer
 

ignoble.
 
utilise les ifstream en binaire et voilà
http://cplusplus.com/ref/iostream/istream/read.html
 
 
le problèem c'est de toutes façons eof. eof ne dit pas si on est à la fin du fichier, mais si la dernière lecture a échouée à cause de eof.
 
donc on analyse ton programme
 
while(!eof) - ok, ça passe, le fichier vient d'etre ouvert
 
read - ok, on a lu le premier, le pointeur est en fin de fichier
 
while(!eof) - ok, on est en fin de fichier __mais__ aucune lecture infructueuse n'a été effectuée
 
read - échoue ... le contenu de tCD est le même que le dernier enregistrement puisqu'il n'est pas relu
 
while(!eof - voilà, ça termine
 
 
 
 
en bon programme ressemblera à
 
while(fichier.read(...))
{
  // traitement  
}

n°680713
Taz
bisounours-codeur
Posté le 22-03-2004 à 22:29:25  profilanswer
 

JagStang a écrit :

logique. while (!feof(fic)) est true car tu fais fread dans la première instruction. fais une trace ça te paraitras logique

moi j'ai fait la version détaillée. seulement faut bien avoué que ce sujet est un exemple magistral de comment il ne faut pas utiliser feof sous peine de traiter 2 fois le dernier enregistrement

n°680743
mbibim
Posté le 22-03-2004 à 23:03:23  profilanswer
 

et sans utiliser les ifstream y'a surement une solution ... en fait c pour un pot qui est en BTS info et il a pas encore fait tout ca ...  
merci

n°680747
mbibim
Posté le 22-03-2004 à 23:05:50  profilanswer
 

c quoi une lecture infructueuse ??

n°680748
Taz
bisounours-codeur
Posté le 22-03-2004 à 23:06:05  profilanswer
 

c quoi le problème d'utiliser les fstream ? si tu utilise cout, tu utilise déjà les stream. tu peux jouer avec cout.write si tu veux ou cin.read ... l'interface des stream est semblabe aux FILE*, ça s'utilise tout seul, et au moins c'est du C++, pas du C

n°680749
mbibim
Posté le 22-03-2004 à 23:07:24  profilanswer
 

justement il a pas fait le c++ juste les flux cout cin

n°680751
Taz
bisounours-codeur
Posté le 22-03-2004 à 23:10:29  profilanswer
 

ben oui mais je te dit que quand t'utilises cout/cin, c'est déjà des stream, alors ça change rien, just ouvrir le fichier, et même usage que partout.
 
stdio est FILE*, quand tu utilises stdio, ben tu sais déjà comment on utilise un FILE*


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  pb de lecture dansun fichier

 

Sujets relatifs
Est-il possible de changer le xsl associé à un fichier xml à la volée?Xème ligne d'un fichier
lecture de fichier un peu complexeMinimiser fenetre DOS au lancement d'un fichier BATCH (.bat)
clé unique pour identifier un fichiernom de fichier sans extension
Fichier help du language html en français ?Un bout de code relatif à plusieurs pages dans un fichier à part
[VC++] Drag and drop d'un fichier sur une CDialog 
Plus de sujets relatifs à : pb de lecture dansun fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR