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
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
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)
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 boucleC'est bon?
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); }
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 ?
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.
gl :padodanle51 :* Sais-tu vraiment ce que fait la fonction ftell() ? D'apres toi quelle est la valeur de lsize ici ?C'est tout à fait faux !!! Lire (ou relire) la documentation de ftelldonc 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
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
Partager