Lecture d'un fichier: fin de fichier arrive trop vite!

Lecture d'un fichier: fin de fichier arrive trop vite! - C - Programmation

Marsh Posté le 03-12-2007 à 14:56:33    

Bonjour, j'essaye de lire un fichier sous windows pour concatener plusieurs fichiers de environ 90 Ko chacun. Hors quand je n'arrive pas à lire mon fichier jusqu'au bout ... j'ai systèmatiquement u feof ou un read(blabla) ==0 avant la fin réelle du fichier. Exemple de code:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h>
  4. int main(int argc, char *argv[])
  5. {
  6. char *buffer=(char*) malloc(sizeof(char)*352*288);;
  7. int size,lu,fd;
  8. fd=open("projet_compression.pdf",O_RDONLY);
  9. size=0;
  10. lu=0;
  11. do   
  12. {       
  13.          //printf("%d ",feof(fichier));
  14.          lu=read(fd,&buffer[size],10);
  15.         // printf("%c\n",buffer[size]);
  16.          size+=lu;
  17.                
  18. } while(lu>0);
  19. //printf("%d\n",feof(fichier));
  20. close (fd);
  21. printf("%d\n",size);
  22. getch();
  23.              
  24.   return 0;
  25. }


 
 
Mon fichier projet_compression fait ~ 235 Ko et mon programme me retourne une size de ~1.8 Ko. J'ai essayé avec fread, read, scanf ... tjrs le même problème. Je suis sous Windows XP (NTFS) avec Bloodshed C++. Merci pour toutes vos remarques et suggestions.


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 03-12-2007 à 14:56:33   

Reply

Marsh Posté le 03-12-2007 à 15:07:06    

- utilise les fonctions f*.
- utilise le mode binaire "rb" pour ton windows
- regarde bien le retour de fread
- n'utilise pas feof

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed