2012-10-08 3 views
1

J'utilise fread pour lire à partir d'un fichier, puis utiliser fwrite pour écrire dans un autre fichier. mais le contenu du nouveau fichier est légèrement différent du contenu de l'ancien fichier (le nouveau fichier a beaucoup plus de caractère), savez-vous ce qui peut causer cela et comment le réparer?fread et fwrite ont des résultats différence

à lire

file= fopen(locationHolder[x], "r");  
chunkToSend.chunkcontent.data = malloc(20000); 
chunkToSend.chunkcontent.len = fread(chunkToSend.chunkcontent.data , 1, 20000, file); 

à écrire

file = fopen(filelocation, "w"); 
fwrite(responseChunk->chunkcontent.data, 1, responseChunk->chunkcontent.len, file); 

c'est le fichier que je lis:

†+ƒCÃÅ«*u`‘Ÿ‘Ž÷-U‰ÎVøÈ ýÇ}‡3²SûYè³…öeŠ 
5êèMØ“—­~K¾ëb–܆º[ö¿äWÔM) 
ø˜i ¯’#\×b!¥^b€÷ûƒãq.]…©\.u7بøöÔv´cgÒD–o_ÊûG}^ªmÞŸ}ÛåŒ}?Ž…WíëH 
?̓>—”*î`ÔÿïÖtàNÕ$Cú¾@Ž›¿Žíohy5ÅE5qز9¡_S雉+þ¦¥²‘*Jíf† 
#¸«vÌÏ s¼üEÃe+vLrF¯Gå3šú¦Ì×Mçó 
<f¥#ÇyEBŠ1iÉŒ6pZa›MSÅîl:ôšËħ 
Jþ}ÜÍÃÑ1˜´+$f̆\Ø$±)sæâ¼üõÅ‘Ï™Àd–ÚDM*Ì 
R¯èÕ¼£C†}— 
¸mݼž„ª1øL5E‰_ð7âHö:´¡`¼E[Ö<BJüR’½Ê€“%8p 
LÄ] ¡û2ì––û}ðCÓîŽBáæeÎøëåZ§ " 
[Òºèf¯Œÿ»'L"g‚æ°C«G§¸IŸ‰ˆÚ‘_´G’.ÂÝp¯K%RÕlÍâ3÷À+\9rØ‚/˱V¨?Ù}ܨ›`l½î~RŽbŒ—w˜[£¦2™¾RÿÁeÎPbeö‘¿±¤N#Oåãº& 
Êc9OËbÿÊ3ÚV⛩²TPdx»ÉbèÁW8×MAà¥ó]D 
å™QØè’¿=Ÿ±­$BºÀŒdž\3âZ³‰×…׉…¹dؾíÂÂÎA^ǦèÕ`±³ï 
<µ¡QGÙY—-p÷›AÂ+pžD‘©ûÊÄÉ÷¢y×çÃt…ˆæîYiGÇÊAðÁô¡4YWoâ=ÊÁ+¤·•Ï)ùïéÚTVî±0ME¡{Èÿ‚.G°Ágª¯‚É9&­ê¡ÑUIÃĤb†§JâY&_SæþJãi›©'È›XA’M[dY&²AbîAëfG½€oN(oM+CzíµÚ 

c'est le fichier que j'ai écrit:

†+ƒCÃÅ«*u`‘Ÿ‘Ž÷-U‰ÎVøÈ ýÇ}‡3²SûYè³…öeŠ 
5êèMØ“—­~K¾ëb–܆º[ö¿äWÔM) 
ø˜i ¯’#\×b!¥^b€÷ûƒãq.]…©\.u7بøöÔv´cgÒD–o_ÊûG}^ªmÞŸ}O…ªœ¦ÛåŒ}?Ž…WíëH 
?̓>—”*î`ÔÿïÖtàNÕköR,E·$Cú¾@Ž›¿Žíohy5ÅE5qز9¡_S雉+þ¦¥²‘*Jíf† 
#¸«vÌÏ s¼üEÃe+vLrßÞ¾"ò1%áoÌû/êF¯Gå3šú¦Ì×Mçó 
<f¥#ÇyEBŠ1iÉŒ6pZa›MSÅîl:ôšËħ 
Jþ}ÜÍÃÑ1˜´+$f̆\Ø$±)sæâ¼üõÅ‘Ï™Àd–ÚDM*Ì 
R¯èÕ¼£C†}— 
¸mݼž„ª1øL5E‰_ð7âHö:´¡`¼E[Ö<BJüR’½Ê€“%8p 
LÄ] ¡û2ì––û}ðCÓîŽBáæeÎøëåZ§ " 
[Òºèf¯Œÿ»'L"g‚æ°C«G§¸IŸ‰ˆÚ‘_´G’.§b[•’KÛ0I¼û´)•Á 
é_“Ä*ÂÝp¯K%RÕlÍâ3÷À+\9rØ‚/˱V¨?Ù}ܨ›`l½î~RŽbŒ—w˜[£¦2™¾RÿÁeÎPbeö‘¿±¤N#Oåãº& 
Êc9OËbÿÊ3ÚV⛩²TPdx»ÉbèÁW8×MAà¥ó]D 
å™QØè’¿=Ÿ±­$BºÀŒdž\3âZ³‰×…׉…¹dؾíÂÂÎA^ǦèÕ`±³ï 
<µ¡QGÙY—-p÷›AÂ+pžD‘©ûÊÄÉ÷¢y×çÃt…ˆæîYiGÇÊAðÁô¡4YWoâ=ÊåÓñš‰Ö_”]½ÅÛô8ª<‡·gœ¡C`øm¼Á+¤·•Ï)ùïéÚTVî±0ME¡{Èÿ‚.G°Ágª¯‚É9&­©pöïMâF³°Ä}à–+iä0;ˆ7Y|Å4u¹SFŸwê¡ÑUIÃĤb†§JâY&_SæþJãi›©'È›XA’M[dY&²AbîAë[‚þ%\6¿ÿ=î…Èq‚ÌÉ$é“o 
àƒž“ªÔ~ºÐ¹ÿÔ_löfG½€oN(o§ƒþ7Í 
Âý0«F\!¡Ä¹\ÙoÑ,¼W™´CC#mà] 

** ------ peu importe, compris le problème. Si vous ouvrez le même fichier sur Windows et Linux, ils ont toujours l'air différent. J'ouvre l'ancien fichier sur windows pendant que j'ouvre le nouveau fichier linux.

+1

Quelle est la différence? – Minion91

+2

Est-ce sur MS Windows? Si c'est le cas, vous devez répliquer le mode texte/binaire en mode ouvert. – wallyk

+0

essayer de 'memset (chunkToSend.chunkcontent.data, 0, 20000)' premier – Eun

Répondre

3

Si vous voulez lire et écrire les fichiers sous forme binaire sur un système Windows, vous devrez spécifier que lorsque vous les ouvrez pour la lecture:

file=fopen("source", "rb"); 

et pour l'écriture:

file=fopen("target", "wb"); 

De même, n'oubliez pas de vérifier si les ouvertures ont réussi avant d'utiliser le descripteur de fichier. (file != NULL)

+0

merci pour la réponse, il me donne toujours le même résultat – help

+0

D'abord, vous n'avez pas dit quel genre de système vous utilisez. Deuxièmement, dans votre question, ce ne sont pas des «fichiers». C'est juste une ordure que vous avez coupée et collée de quelque chose que vous utilisez pour les voir. Où sont-ils pareils? Où sont-ils différents? Utilisez un outil approprié pour comparer les fichiers binaires et découvrir. La raison la plus courante des différences est les caractères de retour à la ligne et les valeurs nulles (mais la lecture/écriture en binaire peut éviter). Enfin, c'est un mauvais code. Vous ne vérifiez pas le retour de 'fwrite' pour voir ce qui a été réellement écrit. Ecrire un * petit * programme pour copier les mêmes données et poster le tout ici. –

Questions connexes