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 :

Parcourir un fichier binaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Parcourir un fichier binaire
    Bonjour,

    J'aurais une 'tite question:

    Je dispose d'un fichier contenant une premiere partie ecrite en ASCII, puis une seconde partie en binaire. (par ex, les 5 premieres lignes sont en ASCII, et les 10 dernieres lignes en binaire).
    Je souhaiterais recuperer les données ASCII d'une part, puis recuperer mes données binaire dans un tableau.

    Pour parcourir les données ASCII, je fais un fgets tout bete et j'obtient mes données.
    Pour la partie binaire, j'arrive à recuperer tout le fichier (ASCII + binaire) dans un tableau, je n'arrive pas à selectionner uniquement la partie binaire.

    Pourriez-vous m'aider ??

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Si tu lis un fichier binaire, n'oublie pas l'option "b" lors du fopen.

    Tu peux alors voir la taille de ton fichier en allant à la fin de celui-ci avec fseek puis en utilisant ftell.

    Il te suffit alors de revenir au début de ton fichier avec fseek ou rewind, de lire tes 5 lignes avec fgets puis utiliser une seconde fois ftell pour savoir quand tes données binaires commencent.

    Ainsi grâce aux deux ftell, tu connais le nombre d'octet de tes données en binaire. Un simple fread te permettra de les lire en une seule fois et de les stocker dans ton tableau.

  3. #3
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut
    Le fgets t'ayant ramené la partie ASCII (ce qui reste discutable selon le contenu en question), il t'aura aussi positionné au début de la partie binaire, que tu n'as plus qu'à charger dans ton tableau ... Où est le problème ?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    En fait, il faut considérer que le fichier entier contient des données binaires, le début de ces données correspondant à une suite de caractères ASCII.

    La question est alors de connaitre le format utilisé pour les données en l'occurrence comment peut-on distinguer la partie contenant les données correspondant à du texte des autres données qui suivent ? Par exemple, la première partie correspond à 5 lignes, chaque ligne étant terminée par les bytes ...(à préciser).
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Pour plus de precision sur le fichier:
    Il s'agit d'une image, dont les premieres lignes sont un en-tete regroupant des information necessaire au decodage (taille de la matrice, ...) puis les données de l'image en binaire.
    La ou je peche un peu, c'est que si je fais un fopen (r) je peux lire l'en tete pour recuperer mes infos, et si je fais un fopen (rb) je ne peux voir le dernier caractere ASCII.

  6. #6
    Membre expérimenté Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Points : 1 372
    Points
    1 372
    Par défaut
    Rien ne t'empêche de faire en tout et pour tout un seul fopen(mon_fichier,"rb");

    La fonction fgets que tu souhaites utiliser fonctionnera parfaitement avec un fichier ouvert en binaire même pour lire les lignes en ASCII, puis quand tu auras lu tes lignes ASCII, tu seras déjà positionné pour lire la suite en binaire.

    Je précise toutefois que pour ma part, je ne ferais pas ainsi : je relèverais plutôt le header avec fread et le collerais dans une structure adaptée avant de lire le reste du fichier.
    Et comme je suis d'un naturel paresseux, je crois même que je chercherais d'abord s'il n'existe pas une bibliothèque pour lire l'image à ma place !

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1

Discussions similaires

  1. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  2. Réponses: 6
    Dernier message: 23/12/2003, 15h30
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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