IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

[debutant] lecture de fichier (encore)


Sujet :

C

  1. #1
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut [debutant] lecture de fichier (encore)
    Bonjour,
    Toujours dans les Tutorials, est j'avance pas.......
    J'en suis encore à la lecture d'un fichier que je n'arrive pas à lire....
    En fait dans le code qui suit, j'ai l'impréssion que l'instruction while n'est jamais éxécutée. J'ai mis des display partout, est je ne passe jamais dans le while. Je ne comprend pas pourquoi

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <stdio.h>                    
    #define LRECL 81                      
    FILE *fp;        
     
    void read_fic(){                      
      char line[LRECL];                   
      int c=0;                            
      printf("fonction read_fic\n");      
      while (fgets(line,LRECL,fp)!=NULL)  
          {                               
          printf("dans le while %d ",c);  
          c++;                            
          puts(line);                     
          }/*fin while*/                  
      printf("coucou");                   
    }/*fin read_fic*/    
     
     int main() {                                           
    if ((fp = fopen("ADCDB.MIB.HMC","r")) == NULL)         
       fprintf(stderr,"Impossible d'ouvrir le fichier \n");
     else                                                  
       {                                                   
       printf(" Open OK\n");                               
       read_fic();                                         
       fclose(fp);                                         
       }                                                   
    return 0;                                              
    } /* fin du main */
    Lors de l'éxécution de ce code j'ai les display suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Open OK          
    fonction read_fic 
    coucou
    Auriez vous une piste ?

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Quel est le contenu du fichier ?

  3. #3
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Voici une ligne type du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    1.3.6.1.4.1.2.6.42.2.0.1.0.6360144 = '4d41300a4d5a303100'h
    Je considére la ligne comme étant du type char

  4. #4
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Ben il n'y a pas de raison pour que ça ne marche pas...
    Je ne vois pas où est le problème...désolé

  5. #5
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Voià ce que j'obtiens avec le fichier ADCDB.MIB.HMC comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1.3.6.1.4.1.2.6.42.2.0.1.0.6360144 = '4d41300a4d5a303100'h
    Hello World !!!
    Bye..
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Open OK
    fonction read_fic
    dans le while 0 1.3.6.1.4.1.2.6.42.2.0.1.0.6360144 = '4d41300a4d5a303100'h
     
    dans le while 1 Hello World !!!
     
    dans le while 2 Bye...
     
    coucou
    Press ENTER to continue.

  6. #6
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Ben moi n'ont plus je vois pas

    Je sais pas quoi faire ......

  7. #7
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Avec le même code ?

  8. #8
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par SPACHFR
    Avec le même code ?
    Oui, sans rien modifier.

  9. #9
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Quelqu'un aurait 'il une balle ?, je sais plus quoi faire.....

  10. #10
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Es-tu sûr que ton fichier est full ascii ?

  11. #11
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Le fichier n'est pas en ASCII mais en EBCDIC, je suis sur un système IBM.
    C'est le code natif de ce système, tout est en EBCDIC.

  12. #12
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par SPACHFR
    Le fichier n'est pas en ASCII mais en EBCDIC, je suis sur un système IBM.
    C'est le code natif de ce système, tout est en EBCDIC.
    Je n'ai jamais bossé sur IBM, donc je n'ai jamais manipulé de fichier en EBCDIC.
    Donc si ton code tourne sur IBM, cela devrait être transparent (enfin je suppose).
    Mais si ton code tourne sous windows ou sous linux avec un fichier contenant de l'EBCDIC, alors cela peut poser problème.

  13. #13
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Je compile est éxécute ce code sur IBM donc comme tu le penses (et moi aussi) cela devrait être transparent.....
    Cette fois-ci c'est la fin du monde....

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par SPACHFR
    Lors de l'éxécution de ce code j'ai les display suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Open OK          
    fonction read_fic 
    coucou
    Auriez vous une piste ?
    J'ai un peu réorganisé ton code (les globales, çaÿ mal...) :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <stdio.h>
     
    static void read_fic (FILE * fp)
    {
       char line[81];
       int c = 0;
       printf ("fonction read_fic\n");
       while (fgets (line, sizeof line, fp) != NULL)
       {
          printf ("dans le while %d\n", c);
          c++;
          puts (line);
       }                            /*fin while */
       printf ("coucou");
    }                               /*fin read_fic */
     
    int main (void)
    {
       FILE *fp = fopen ("test.txt", "r");
       if (fp == NULL)
       {
          fprintf (stderr, "Impossible d'ouvrir le fichier \n");
       }
       else
       {
          printf (" Open OK\n");
          read_fic (fp);
          fclose (fp);
       }
       return 0;
    }                               /* fin du main */
    Avec (text.txt)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    1.3.6.1.4.1.2.6.42.2.0.1.0.6360144 = '4d41300a4d5a303100'h
    Je n'ai pas de problèmes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Open OK
    fonction read_fic
    dans le while 0
    1.3.6.1.4.1.2.6.42.2.0.1.0.6360144 = '4d41300a4d5a303100'h
     
    coucou
    Press ENTER to continue.
    Pose des questions si tu ne comprends pas..

  15. #15
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Je ne comprend pas pourquoi je ne passe pas dans le while ?
    Bien que le code semble fonctionner chez vous.

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    question bête : es-tu sûr de l'emplacement du fichier ????

  17. #17
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Citation Envoyé par souviron34
    question bête : es-tu sûr de l'emplacement du fichier ????
    Oui vérifie bien, c'est l'erreur typique du programmeur qui croit ouvrir un certain fichier texte alors qu'en fait il en ouvre un du même nom situé ailleurs .. (je parle en connaissance de cause )

  18. #18
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Malheureusement pour moi, je n'ai aucun doute sur le fichier, c'est le seul à porter ce nom.

  19. #19
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    J'ai ajouté un test (if) dans la fonction pour test la valeur de retour de fgets.
    A l'éxécution, mon test est toujours vrai !!!
    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
     
    void read_fic(){                        
      char line[LRECL];                     
      int c=0;                              
      printf("fonction read_fic\n");        
      if (fgets(line,LRECL,fp)==NULL) {     
          printf("probleme de lecture\n");} 
      while (fgets(line,LRECL,fp)!=NULL)    
          {                                 
          printf("dans le while %d ",c);    
          c++;                              
          puts(line);                       
          fprintf(stdout,"line : %s",line); 
          }/*fin while*/                    
      printf("coucou");                     
    }/*fin read_fic*/
    Est ce que cela veut dire que cela vient de la structure du fichier ?
    J'ai testé avec 2 fichiers j'ai le même problème
    Résultat de l'éxécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Open OK           
    fonction read_fic  
    probleme de lecture
    coucou

  20. #20
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Je sais pas si ça pourra t'aider mais je pense intimement que oui :
    - si fgets rencontre EOF alors il arrête la lecture et retourne la valeur NULL
    - si fgets rencontre \n alors il arrête la lecture et retourne la chaîne lue jusque là

    D'où ma question : dans ton fichier, es-tu allé a la ligne après la ligne que tu essayes de lire ?

    Bonne chance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Debutant] Lecture de fichier txt
    Par vbbarent dans le forum Débuter
    Réponses: 11
    Dernier message: 06/05/2008, 11h13
  2. [debutant] lecture de fichier
    Par SPACHFR dans le forum Débuter
    Réponses: 3
    Dernier message: 23/05/2007, 17h50
  3. [debutant] lecture de fichier
    Par cladsam dans le forum Caml
    Réponses: 10
    Dernier message: 06/05/2007, 17h44
  4. [debutant] lecture d'un fichier txt de 10mo
    Par karamazov994 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 19/04/2005, 15h55
  5. [Debutant] split() , Tokenizer , et lecture de fichier
    Par SirDarken dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 22/09/2004, 00h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo