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 ?
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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 ?
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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é
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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.
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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 ......
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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 ?
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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.
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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.....
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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 ?
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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.
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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.
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  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....
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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 : 67
    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..
    Pas de Wi-Fi à la maison : CPL

  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.
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  16. #16
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    question bête : es-tu sûr de l'emplacement du fichier ????
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  17. #17
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    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 011
    Points : 1 375
    Points
    1 375
    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.
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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
    S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

  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 : 41
    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
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

+ 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