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 :

Lecture d´un fichier texte .


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Lecture d´un fichier texte .
    Je ne comprend pas pourquoi ce tout simple bout de code ne fonctionne .
    erreur : la mémoire ne peut pas être read ...
    (le fichier existe )
    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
     
    #include <stdio.h>
    FILE *fmap ; 
    int lettre;
     
     
    charger_fichier_map(char *chemin_fichier){
    fmap = fopen(chemin_fichier,"r");                      
     
    while ((lettre = fgetc(fmap)) != EOF)
      {
        printf("%c",lettre);		/* O/P the character to the screen	*/
      }
     
      fclose(fmap);
     
    }                      
     
    int main(int argc, char *argv[])
    {
    charger_fichier_map("C:\dl.txt");
     
      system("PAUSE");	
      return 0;
    }
    question auxilliaire :
    si j´ai plusieurs ligne dans mon .txt , comment faire pour savoir quand je suis au bout d´une ligne ? est ce possible en utilisant juste fgetc ?

    merci d´avance !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 199
    Points : 40 777
    Points
    40 777
    Par défaut
    1) Vérifie que ton fopen ne retourne pas NULL: Exister n'est pas la seule condition, il faut aussi que le fichier soit là où le programme croit qu'il est...

    2) le résultat de fgetc() est \n pour un changement de ligne.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations forums :
    Inscription : décembre 2003
    Messages : 14 512
    Points : 20 297
    Points
    20 297
    Par défaut Re: Lecture d´un fichier texte .
    Citation Envoyé par pilouface
    Je ne comprend pas pourquoi ce tout simple bout de code ne fonctionne .
    On pourraut avoir le code qui compile ? On ne sait pas ce que tu as oublé...
    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
    33
     
    Compiling: main.c
    main.c:1: error: syntax error before '*' token
    main.c:1: warning: type defaults to `int' in declaration of `fmap'
    main.c:1: warning: data definition has no type or storage class
    main.c:5: warning: return type defaults to `int'
    main.c:5: warning: no previous prototype for 'charger_fichier_map'
    main.c: In function `charger_fichier_map':
    main.c:6: error: implicit declaration of function `fopen'
    main.c:6: warning: nested extern declaration of `fopen'
    main.c:6: warning: assignment makes pointer from integer without a cast
    main.c:8: error: implicit declaration of function `fgetc'
    main.c:8: warning: nested extern declaration of `fgetc'
    main.c:8: error: `EOF' undeclared (first use in this function)
    main.c:8: error: (Each undeclared identifier is reported only once
    main.c:8: error: for each function it appears in.)
    main.c:10: error: implicit declaration of function `printf'
    main.c:10: warning: nested extern declaration of `printf'
    <internal>:0: warning: redundant redeclaration of 'printf'
    main.c:13: error: implicit declaration of function `fclose'
    main.c:13: warning: nested extern declaration of `fclose'
    main.c: At top level:
    main.c:18: error: conflicting types for 'main_'
    C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
    main.c:18: error: conflicting types for 'main_'
    C:/clib/frmwrk/inc/main.h:36: error: previous declaration of 'main_' was here
    main.c:19:21: warning: unknown escape sequence '\d'
    main.c: In function `main_':
    main.c:19: warning: passing arg 1 of `charger_fichier_map' discards qualifiers from pointer target type
    main.c:21: error: implicit declaration of function `system'
    main.c:21: warning: nested extern declaration of `system'
    main.c:23:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 0 seconds)
    question auxilliaire :
    si j´ai plusieurs ligne dans mon .txt , comment faire pour savoir quand je suis au bout d´une ligne ? est ce possible en utilisant juste fgetc ?
    La fin de ligne est marquée par '\n'.

    Mais pour lire des lignes de texte, fgets() est tout indiqué.

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Bien Vu!
    en effet , mon fichier est NULL.

    Comment je dois faire pour lui spécifier l´emplacement "c:\dl.txt"
    (sachant que mon prog se trouve dans c:\dev-cpp\projects\test

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Compilateur: Default compiler
    Building Makefile: "C:\Dev-Cpp\projects\map\Makefile.win"
    Exécution de  make...
    make.exe -f "C:\Dev-Cpp\projects\map\Makefile.win" all
    gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"   
     
    [b]main.c:22:21: warning: unknown escape sequence '\d'[/b]
     
    gcc.exe main.o  -o "map.exe" -L"C:/Dev-Cpp/lib"  
     
    Exécution terminée
    Compilation OK

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

    Informations forums :
    Inscription : décembre 2003
    Messages : 14 512
    Points : 20 297
    Points
    20 297
    Par défaut
    Citation Envoyé par pilouface
    Comment je dois faire pour lui spécifier l´emplacement "c:\dl.txt"
    Le séparateur de chemin (POSIX) c'est /. Même Windows (WIN32) respecte ça...
    mais si, pour des raisons qui m'échappent, tu tiens à utiliser le \ (MS-DOS, par exemple), il faut le doubler dans les chaines C :
    mais ça, c'est écrit dans ton livre de C que tu devrais ouvrir plus souvent...
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/10/2009, 13h32
  2. Réponses: 4
    Dernier message: 11/09/2006, 13h47
  3. [C#]Lecture gros fichier texte
    Par kekesilo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/05/2006, 13h58
  4. [AS2] Lecture Ecriture Fichier Texte
    Par cpr0 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 13/09/2005, 11h22
  5. lecture de fichier texte
    Par prorider dans le forum C
    Réponses: 36
    Dernier message: 08/09/2004, 20h55

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