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 :

Lire un fichier non textuel


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Lire un fichier non textuel
    Bonjour,

    Dans mon programme je lis un fichier octet par octet avec fgetc.
    Ensuite, je coupe les octets en deux en travaillant sur les bits, il m'est donc nécessaire de lire octet par octet.
    Mon programme fonctionne bien avec des fichiers textes, mais je n'arrive pas à le faire tourner avec d'autre fichiers, tel que des images par exemple.

    Voici mon code (en gros):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    char car;
    FILE *fichier = fopen("monfichier.txt", "r");
     
    do {
       car = fgetc(fichier);
     
       if(car != EOF) {
          // travail de bit sur car
       }
    } while(car != EOF);
     
    fclose(fichier);
    Je pense que ca viens de la condition d'arrêt EOF.
    Est ce qu'elle existe également dans les fichiers non textuels ?

    Cordialement,

  2. #2
    Expert éminent
    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
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    Dans mon programme je lis un fichier octet par octet avec fgetc.
    2 choses fondamentales avant d'aller plus loin :
    1. en binaire, on ouvre avec "rb"
    2. fgetc() retourne un int. Le type de car est donc faux.

    ceci fonctionne :
    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
     
    #include <stdio.h>
     
    int main (void)
    {
       FILE *fichier = fopen ("monfichier.txt", "rb");
       if (fichier != NULL)
       {
          int car;
          while ((car = fgetc (fichier)) != EOF)
          {
             /* travail de bit sur car */
          }
     
          fclose (fichier);
       }
       return 0;
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Bonjour,

    Merci pour ces réponses, j'ignorais qu'il existait un type de lecture "rb" !
    Tout semble fonctionner.

    Cordialement,

  4. #4
    Expert éminent
    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
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    Merci pour ces réponses, j'ignorais qu'il existait un type de lecture "rb" !
    C'est basique. C'est écrit dans ton livre de C.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/07/2012, 17h54
  2. [tFilexist = False] Lire les fichiers non existants dans un tLogRow
    Par mathieu_r dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 11/05/2009, 15h40
  3. Language (non sur serveur) lire/ecrire fichier texte / BDD
    Par jorisvh dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 11/05/2006, 20h31
  4. Réponses: 7
    Dernier message: 21/05/2004, 17h13
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

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