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 :

Je n'arrive pas à lire un fichier


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Points : 64
    Points
    64
    Par défaut Je n'arrive pas à lire un fichier
    Bonjour,

    Je m'arrache les cheveux à essayer d'écrire un code qui ne fonctionne pas et je ne sais pas du tout pourquoi

    J'essai de lire un caractère dans un fichier et l'afficher à l'écran. Seulement j'arrive à écrire dedans mais pas a lire dedans.

    C'est du paranormal, 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
    int main ( int argc, char** argv )
    {
     
        FILE* fichier = NULL;
        int caractere = 0;
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
            caractere = fgetc(fichier);
            printf("%c", caractere);
     
            fclose(fichier);
        }
     
    return 0;
     
    }
    Toutes les fonctions que j'utilise pour lire dans un fichier rien ne marche, apr contre si j'essai d'écrire dans ça fonctionne impecable.

    Quelqu'un aurait une explication ???

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Ce code fonctionne chez moi. Quand tu dis que ça ne marche pas, qu'est-ce que ça fait exactement ?
    La fonction fgetc renvoie toujours quelque chose : soit EOF en cas d'erreur ou en cas de fin de fichier, soit un caractère de type unsigned char que la fonction convertit en int. Quelle valeur renvoie-t-elle ?

  3. #3
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Vérifies que tu as bien les droits de lecture sur ce fichier.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Tu peux rajouter un else à ton test if pour que tu saches si le programme parvient à ouvrir ton fichier (voir exemple de code plus bas).
    Si c'est ça, tu peux vérifier que le nom du fichier est bien correct (pas d'histoire de majuscule ou autre).

    Test ça sinon pour voir si c'est mieux :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main ( int argc, char** argv )
    {
     
        FILE* fichier = NULL;
        int caractere = 0;
     
        fichier = fopen("test2.txt","w");
    	fprintf(fichier,"Juste un test pour voir si c est mieux comme ca !!\n");
    	fclose(fichier);
     
        fichier = fopen("test2.txt", "r");
     
        if (fichier != NULL)
        {
            while (caractere != EOF )
            {
            caractere = fgetc(fichier);
            printf("%c", caractere);
            }
     
            fclose(fichier);
        }else
        {
            printf("\nImpossible d ouvrir le fichier specifie !");
        }
     
    return 0;
     
    }

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 397
    Points : 23 761
    Points
    23 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            printf("%c", caractere);
    Essaie aussi d'ajouter un retour à la ligne « \n » juste après « %c », sinon ton caractère affiché risque de rester dans le buffer de sortie. En principe, tous les buffers en attente sont vidés lorsque ton programme prend fin, mais peut-être est-il plus vaste que ce que tu nous montres ici…

    Citation Envoyé par gizmo2937 Voir le message
    Tu peux rajouter un else à ton test if pour que tu saches si le programme parvient à ouvrir ton fichier […] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    }else
        {
            printf("\nImpossible d'ouvrir le fichier specifié !");
        }
    Mieux que printf(), perror() te donnera en plus la raison de cet échec. Et elle fait partie de stdio.h.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Envoyé par Obsidian
    Mieux que printf(), perror() te donnera en plus la raison de cet échec. Et elle fait partie de stdio.h.
    Ah oui effectivement c'est beaucoup mieux !
    Et en plus c'est plus court si on met pas de message personnalisé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    …
        }else
        {
            perror("");
        }

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 397
    Points : 23 761
    Points
    23 761
    Par défaut
    Citation Envoyé par gizmo2937 Voir le message
    Ah oui effectivement c'est beaucoup mieux !
    Et en plus c'est plus court si on met pas de message personnalisé !
    Et donc, alors, as-tu obtenu un message d'erreur ? :-)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    Envoyé par Obsidian
    Et donc, alors, as-tu obtenu un message d'erreur ? :-)
    Oui plein même !!
    J'ai expérimenté un peu avec et ça m'a permis de découvrir l'existence de la variable errno.
    Est-ce que c'est ce qui est utilisé pour tester l'existence d'un fichier (fopen puis test sur errno) ?

    Mais attendons le retour de Majudis pour voir quel message d'erreur il obtient

Discussions similaires

  1. [PHP 5.3] Je n'arrive pas à récupérer un fichier pour le lire (csv)
    Par beegees dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2011, 10h02
  2. je n'arrive pas à lire un fichier wav
    Par _vince_ dans le forum Général Python
    Réponses: 4
    Dernier message: 02/10/2010, 14h57
  3. Réponses: 1
    Dernier message: 07/06/2010, 10h23
  4. Je n'arrive pas à acceder à mon fichier c'est La cata
    Par polianita dans le forum Access
    Réponses: 13
    Dernier message: 17/08/2006, 14h44
  5. Je n'arrive pas à ouvrir un fichier pdf
    Par tinwul dans le forum Access
    Réponses: 13
    Dernier message: 06/06/2006, 12h56

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