loul13
Messages postés11Date d'inscriptionsamedi 29 mai 2004StatutMembreDernière intervention15 février 2010
-
20 avril 2006 à 16:58
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
20 avril 2006 à 21:34
bonjour,
j'essaie de copier un fichier .pdf avec fread et fwrite, mais fread trouve la fin de fichier avant la vrai du fichier
et plus bizarre si j'utilise fseek pour avancer le curseur après il lit le fichier jusqu'à la fin
voici mon code :
int main (void)
{
FILE * pdfin, * pdfout;
int i,j=0,cont;
char ligne [128];
long compt;
pdfout = fopen("c:\\robinson_approx.pdf","w");
pdfin = fopen("robinson_approx.pdf","r");
fprintf (pdfout, "%PDF-1.2\n");
do
{
cont = fread (ligne, sizeof(char), 128, pdfin);
fwrite (ligne, cont, sizeof(char), pdfout);
/* if (!feof(pdfin) fseek(pdfin, 1, SEEK_CUR);*/
}while (!feof(pdfin));
fclose (pdfin);
fclose (pdfout);
return 0;
}
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 20 avril 2006 à 17:24
Si je ne m'abuse, fread et fwrite doivent recevoir en 1er paramètre une
adresse ou un pointeur c'est au choix, donc &ligne à la place de
ligne tout court. Tu peut aussi utiliser l'api CopyFile, n'oublie pas
alors d'inclure windows.h .
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 20 avril 2006 à 17:28
deplus je vient de relir, sizeof(char) ??? tu copie octet par
octet ? Tu doit transmettre la taille de ta structure, ici ligne donc
sizeof(ligne) car sinon tu transfer chaque foi 1 seul caractère dans
ligne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
loul13
Messages postés11Date d'inscriptionsamedi 29 mai 2004StatutMembreDernière intervention15 février 2010 20 avril 2006 à 17:36
merci SAKingdom,
pour ta réponse ca marche nickel, ca fait longtemps que j'ai plus manipulé de fichier binaire
deck_bsd-> sizeof(ligne) me renvoie la taille du pointeur et non la taille du tableau
fread (pointeur sur la variable qui doit recevoir les données,
taille du type de donnée,
nombre d'objet,
flux d'entrrée);
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 20 avril 2006 à 17:37
mdr , encore un truc inverse les paramètre cont et sizeof(char) (dans
ton prog que tu doit remplacer par sizeof(ligne) ;) ). C'est dabord la
taille de la structure juste après le 1er paramètre et tu peut même
remplacer cont par 1. Tous ce que j'ai dit est aussi bien pour fread
que fwrite.