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

  FORUM HardWare.fr
  Programmation
  C

  Double lecture avec fscanf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Double lecture avec fscanf

n°1227552
jon301
Posté le 20-10-2005 à 21:52:13  profilanswer
 

Salut à tous,
Je dispose d'un fichier dont le format est le suivant :  
 
---------------------------
BERNE Rodolphe
1976
14, Concierge
73, Savoie
GAILLOT Marc
1974
45, Secretaire
68, Haut-Rhin
...
---------------------------
 
 
A partir de ce fichier, je dois extraire les informations suivantes, que j'ajoute a une liste :
BERNE Rodolphe, 1976, 14, 73
GAILLOT Marc, 1974, 45, 68
...
 
(",Concierge" et ", Savoie" sont ignorés)
 
Donc voici comment se présente mon code :
 

Code :
  1. while(!feof(pt_fic)) {
  2. fscanf(pt_fic, "%[^\\n]s", une_identite);
  3. fscanf(pt_fic, "%d", &une_annee);
  4. fscanf(pt_fic, "%d %[^\\n]s", &une_profession, ligne_suite);
  5. fscanf(pt_fic, "%d %[^\\n]s", &un_departement, ligne_suite);
  6. InsertionNoeud(ma_liste, NouveauNoeud(une_identite, une_profession, une_annee, un_departement));
  7. }


 
Description des variables :  
une_identite : tableau de caractère (contient nom+prenom)
une_annee, une_profession, un_departement : entiers
ligne_suite : suite de la ligne dont je ne me préoccupe pas (contient par exemple ", Concierge", ", Savoie" ...)
 
 
Le problème est qu'au final, j'obtiens la liste voulue mais avec tous les éléments en DOUBLE.
Exemple de liste obtenue :
 
---------------------------
BERNE Rodolphe, 1976, 14, 73
BERNE Rodolphe, 1976, 14, 73
GAILLOT Marc, 1974, 45, 68
GAILLOT Marc, 1974, 45, 68
...
---------------------------
 
Ceci signifie qu'au premier bouclage, la fonction lit les 4 premières lignes et insère l'élément.
Au deuxième bouclage, la fonction RE-LIT les 4 mêmes lignes et insère l'élément !
et ce, jusqu'à la fin du fichier...
 
Je ne comprends pas pourquoi le pointeur reste toujours sur la même ligne la 2e fois, alors qu'il devrait avancer 4 par 4.
 
Voila voila :/
 
Merci d'avance pour votre aide !  :jap:  
 
 
Jon

Message cité 1 fois
Message édité par jon301 le 20-10-2005 à 22:55:00
mood
Publicité
Posté le 20-10-2005 à 21:52:13  profilanswer
 

n°1227601
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-10-2005 à 22:54:54  profilanswer
 

jon301 a écrit :


Code :
  1. while(!feof(pt_fic)) {
  2. fscanf(pt_fic, "%[^\n]s", une_identite);
  3. fscanf(pt_fic, "%d", &une_annee);
  4. fscanf(pt_fic, "%d %[^\n]s", &une_profession, ligne_suite);
  5. fscanf(pt_fic, "%d %[^\n]s", &un_departement, ligne_suite);
  6. InsertionNoeud(ma_liste, NouveauNoeud(une_identite, une_profession, une_annee, un_departement));
  7. }




feof() ne fait pas ce que tu crois.
 
http://mapage.noos.fr/emdel/notes.htm#fichiers
 
Sinon, je recommande fgets() puis sscanf()...

Citation :


Description des variables :  
une_identite : tableau de caractère (contient nom+prenom)
une_annee, une_profession, un_departement : entiers
ligne_suite : suite de la ligne dont je ne me préoccupe pas (contient par exemple ", Concierge", ", Savoie" ...)
 
 
Le problème est qu'au final, j'obtiens la liste voulue mais avec tous les éléments en DOUBLE.
Exemple de liste obtenue :
 
---------------------------
BERNE Rodolphe, 1976, 14, 73
BERNE Rodolphe, 1976, 14, 73
GAILLOT Marc, 1974, 45, 68
GAILLOT Marc, 1974, 45, 68
...


Données insuffisantes. Poste une version minimale mais complète et compilable qui montre le défaut.


Message édité par Emmanuel Delahaye le 20-10-2005 à 22:55:15

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

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

  Double lecture avec fscanf

 

Sujets relatifs
[résolu] lecture des informations d'un fichierproblème lecture d'une donnée url longue
Protection en lecture/modification d'un module au sein d'un projet...lecture du contenu d'une page HTML
problème pour lecture de flux RSS avec magpierss. php?Recherche de méthode de lecture de source HTML
Double scrollbar : comment en supprimer une ?lecture de buffer qui bloque
Pb lecture d'une image après upload[Shell] lecture d'un fichier txt ligne par ligne
Plus de sujets relatifs à : Double lecture avec fscanf


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