Bonjour
j'ai un probleme avec le fread des fichier binaires que j'arrive pas a résoudre.
mon but est de lire un fichier et l'envoyer sur le réseau indépendamment du type du fichier.
mon code marche bien avec les fichiers texte mais dès qu'il s'agit de fichiers binaires il lit pas la totalité.
pour simplifier voila mon code pour vérifier les données lues
ceci me renvoi par exemple pour l'ouverture d'une image de taille 613 octet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #define MAX_BUF 256 FILE * fp ; unsigned char buffer[MAX_BUF]; int long_lu; fp = fopen(nom_fichier,"rb"); while( (long_lu = fread(buffer,1,MAX_BUF,fp) )> 0 ) { printf("\n Lecture d'un bloc avec succes. de taille: %d , taille du buff: %d", long_lu, strlen(buffer) ); }
et effectivement le nouveau fichier ne contient que 26 octet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 "Lecture d'un bloc avec succes. de taille: 256 , taille du buff: 4 Lecture d'un bloc avec succes. de taille: 256 , taille du buff: 14 Lecture d'un bloc avec succes. de taille: 101 , taille du buff: 8"
j'avais essayé avec !feof mais j'ai pensais que la lecture des zero etait considérées comme fin de fichier, mais là y a pas de raison!!
donc d'ou vient le probleme? est ce mon buffer qui est mal défini ou est ce que j'utilise mal la fonction fread()
merci pour les reponses
Partager