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 :

récupérer les bits d'un fichier


Sujet :

C

  1. #1
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut récupérer les bits d'un fichier
    Bonjour, je voudrais savoir comment récupérer les bits d'un fichier, car j'ai beau utiliser fopen(monfichier, "rb"), je n'arrive quand même pas à lire les bits
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Salut,

    Je pense pas qu'on puisse lire bit à bit un fichier, c'est au minimum un byte avec fgetc()
    A part ça je pense que tu confonds "données" et "representation" (les données d'un fichier sont les memes mais peuvent etre representées/affichées de plusieurs façons)

  3. #3
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    Voilà mon code, en fait là je ne peux pas récuperer dans buffer mon fichier en bit?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FILE* pFile;
    pFile = fopen( "C:\\to.pdf" , "rb");
    int* buffer;
    lsize = ftell (pFile);
    fread (buffer, 1, lsize-1, pFile);

    Tu me conseillerai de faire comment pour récupèrer tout les Bits? par une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int i =0;
    while(i<lsize*8)
    {
    buffer[i]= fgetc(pFile);
    }
    C'est bon?

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par padodanle51 Voir le message
    Voilà mon code, en fait là je ne peux pas récuperer dans buffer mon fichier en bit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FILE* pFile;
    pFile = fopen( "C:\\to.pdf" , "rb");
    int* buffer;
    lsize = ftell (pFile);
    fread (buffer, 1, lsize-1, pFile);
    En vrac:

    * tu ne test la valeur de retour de fopen. Que va-t-il se passer en cas d'erreur ?
    * buffer contient une adresse invalide. Il faut soit utiliser un tableau statique soit alloue de la memoire, mais certainement pas utiliser une adresse invalide.
    * Sais-tu vraiment ce que fait la fonction ftell() ? D'apres toi quelle est la valeur de lsize ici ?

  5. #5
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    Salut, merci pour tes réponses, donc lsize = la taille du fichier en octet
    Dans mon programme ne t'inkiet pas je test la valeur de fopen. Concernant buff merci de m'expliquer comment faire.

  6. #6
    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
    gl :
    * Sais-tu vraiment ce que fait la fonction ftell() ? D'apres toi quelle est la valeur de lsize ici ?
    padodanle51 :
    donc lsize = la taille du fichier en octet
    C'est tout à fait faux !!! Lire (ou relire) la documentation de ftell

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par padodanle51 Voir le message
    Salut, merci pour tes réponses, donc lsize = la taille du fichier en octet
    Donc visiblement tu n'as pas compris le fonctionnement de ftell(). Avec le code presente ici, lsize devrait valoir 0.

    Je te conseille la lecture de la FAQ concernant la taille d'un fichier et la page man de ftell

    Citation Envoyé par padodanle51 Voir le message
    Concernant buff merci de m'expliquer comment faire.
    Une fois que la taille a lire aura ete determinee, il faut allouer un buffer de taille suffisante avec malloc(). Et bien sur il est indispensable de tester si l'allocation s'est bien deroulee avant d'utiliser ce buffer et de liberer la memoire avec free() lorsqu'elle n'est plus necessaire

Discussions similaires

  1. récupérer les bits d'un byte
    Par ToTo13 dans le forum Langage
    Réponses: 3
    Dernier message: 10/12/2006, 16h25
  2. Récupérer les propriétés d'un fichier avec GtkFileChooser
    Par yodo21 dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 26/10/2006, 17h30
  3. Récupérer les infos d'un fichier .jpeg
    Par ArseNic dans le forum Multimédia
    Réponses: 3
    Dernier message: 05/10/2005, 15h08
  4. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  5. Récupérer les infos sur un fichier audio
    Par Halleck dans le forum Windows
    Réponses: 13
    Dernier message: 17/04/2004, 18h39

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