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

  FORUM HardWare.fr
  Programmation
  C

  Sujet : fscanf, s'arreter en fin de fichier ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sujet : fscanf, s'arreter en fin de fichier ?

n°1265199
korxx
Posté le 13-12-2005 à 09:40:22  profilanswer
 

Si je met des chaines de characteres dans un fichier  
 
blabla-5-blabla-6  
blabla-4-blabla-3  
 
 
pour les recuperer j'utilise par exemple :  
fscanf(file,%6s-%d-%6s-%d,&var1,&var2,&var3,&var4)  
 
par contre ca me recupere que la premiere ligne, comment faire pour recuperer les autres ? et s'arreter quand il n'y en a plus ?  
 
Désolé pour mes questions qui doivent etre d'un niveau peu élevé mais je débute un peu de ce coté la et je ne trouve pas réponse a mes questions dans le bouquin que j'ai...
 
 
Merci  d'avance  :jap:

mood
Publicité
Posté le 13-12-2005 à 09:40:22  profilanswer
 

n°1265256
Sve@r
Posté le 13-12-2005 à 10:47:00  profilanswer
 

korxx a écrit :

pour les recuperer j'utilise par exemple :  
fscanf(file,%6s-%d-%6s-%d,&var1,&var2,&var3,&var4)  


 :heink:
Ben si "var1" et "var3" sont définies comme des chaînes, style "char var1[100]", faut pas mettre le "&" !!!

Message cité 1 fois
Message édité par Sve@r le 13-12-2005 à 10:50:59
n°1265269
bjone
Insert booze to continue
Posté le 13-12-2005 à 10:53:47  profilanswer
 

un truc dans ce goût là:
 

Code :
  1. char buffer[256];
  2. while( fgets(buffer,sizeof(buffer),file) )
  3. {
  4.    if( sscanf(buffer,"....",....) == nombre_d'extractions )
  5.          ......
  6. }

Message cité 1 fois
Message édité par bjone le 13-12-2005 à 10:57:34
n°1265738
korxx
Posté le 13-12-2005 à 17:51:23  profilanswer
 

Sve@r a écrit :

:heink:
Ben si "var1" et "var3" sont définies comme des chaînes, style "char var1[100]", faut pas mettre le "&" !!!


 
oui ca je sais, c'est pas du tout l'objet de ma question... c'etait juste un exemple.

n°1265740
korxx
Posté le 13-12-2005 à 17:52:43  profilanswer
 

bjone a écrit :

un truc dans ce goût là:
 

Code :
  1. char buffer[256];
  2. while( fgets(buffer,sizeof(buffer),file) )
  3. {
  4.    if( sscanf(buffer,"....",....) == nombre_d'extractions )
  5.          ......
  6. }



 
Merci, en fait je pense avoir trouvé, fscanf renvoi "EOF" quand il arrive en fin de fichier, je vais faire une boucle while avec cette condition, ca devrait marcher :)

n°1265750
bjone
Insert booze to continue
Posté le 13-12-2005 à 18:06:04  profilanswer
 

ouai très franchement d'un point de vue propreté, il vaux mieux lire ligne par ligne et parser ta ligne ensuite.
 
le fscanf y doit cumuler deux domaines d'erreurs: les erreurs de lecture, et les erreurs d'extraction de champ/valeur.
 
l'avantage c'est que avec un truc style ça:
 

Code :
  1. char buffer[256];
  2. int Step=0;
  3. while( fgets(buffer,sizeof(buffer),file) )
  4. {
  5.    switch( Step )
  6.    {
  7.         // 0: Header
  8.         case 0:
  9.                    if( sscanf(...  ) == ... )
  10.                    {
  11.                       // Header OK                         
  12.                       Step=1;
  13.                    }
  14.                    break;
  15.         // 1: collection de trucs type A
  16.         case 1:
  17.                    if( sscanf(.... ) == ... )
  18.                    {
  19.                        // Element Ok
  20.                        // ajout à une liste
  21.                    }
  22.                    break;
  23.    }
  24. }


 
tu peux plus facilement parser un petit fichier ASCII à la con.  
en changeant de mode pour switcher de type de données à récupérer.  (avec la possibilité de faire des allez-retours entre plusieurs type d'infos).
notamment j'avais ça pour les fichiers de scènes 3D de 3DStudio en .ASC tout con, mais bon c'était vieux et limité à la base.
 
le fscanf j'aime po, mais bon ça dépends ce que tu comptes faire par la suite et qu'est-ce que tu as à parser.


Message édité par bjone le 13-12-2005 à 18:08:26

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

  Sujet : fscanf, s'arreter en fin de fichier ?

 

Sujets relatifs
Date de modification d'un fichier et VC++ 6Forcer le téléchargement et espaces dans le nom du fichier
Requête sur fichier XML comme BDDtélécharger un fichier
transférer un fichier[VB6] écrire a la fin d'un fichier .txt
faire un spool vers un fichier dont le nom est horodaté (toto09122005)Enchainement de fichier d'instruction dans un batch
Ouverture de fichier.frx et de fichier.frmCréer un fichier vide en C. [Résolu]
Plus de sujets relatifs à : Sujet : fscanf, s'arreter en fin de fichier ?


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