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


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
    Bonjour,

    Je continu mon auto formation avec l'ANSI_C, mais là je bloque sur un petit pgm (inutile mais formateur)
    L'objectif de ce pgm est d'ouvrir un fichier, de lire le contenu ligne par ligne est d'afficher chaque ligne.
    Voici mon code
    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
     
    #include <stdio.h>                 
    #define LRECL 80                   
    FILE *fp;                          
    char line[LRECL];                  
    void read_fic(void){               
      printf("fonction read_fic");     
      while (fgets(line,LRECL,fp)!=EOF)
          {                            
          puts(line);                  
          }/*fin while*/               
    }/*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 ");                                
       read_fic();                                         
       fclose(fp);                                         
       }                                                   
    } /* fin du main */
    A la compilation j'ai systematiquement ce message qui concerne le while
    No common type found for operands with type "char *" and "int".
    J'ai regardé qqles exemples mais je vois pas d'erreur. J'ai passé la déclaration de mon tableau en globale mais idem....
    Quelqu'un a t'il un piste à me donner ?

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Voilà ce que mon compilateur répond :

    ex.c: In function ‘read_fic’:
    ex.c:8: warning: comparison between pointer and integer
    ex.c: In function ‘main’:
    ex.c:23: warning: control reaches end of non-void function
    La première erreur est ici :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        while (fgets(line,LRECL,fp)!=EOF)
    puisque fgets retourne un pointeur...

    Il faut tester avec un pointeur et la valeur à tester est NULL pour dire si la lecture a eu un problème ou est finie...

    La deuxième erreur est le manque de retour dans le main, il faut rajouter un :

    à la fin du main ou mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdlib.h>
    ...
    return EXIT_SUCCESS;
    Jc

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(line,LRECL,fp)!=EOF
    cette instruction pose évidemment problème :
    à droite ta fonction renvoie en "char*" alors que EOF est de type "int" (ou "char "si tu préféres)

    Il faut donc que tu revoies ton test qui n'est pas correct.

  4. #4
    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 un test sur NULL ça marche toute suite mieux.....
    je vais ajouter le RETURN

    Merci pour cette aide rapide et efficace !!!!

+ Répondre à la discussion
Cette discussion est résolue.

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 (encore)
    Par SPACHFR dans le forum Débuter
    Réponses: 20
    Dernier message: 24/05/2007, 17h43
  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