fread和fwrite有不同的结果

时间:2012-10-08 15:46:49

标签: c fwrite fread

我正在使用fread从文件中读取,然后使用fwrite写入其他文件。但是新文件的内容与旧文件的内容略有不同(新文件有更多的字符),你知道是什么原因造成的吗?以及如何修复它?

阅读

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

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

这是我正在阅读的文件:

†+ƒ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ÃÅ«*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à]
** ------没关系,弄明白了问题。如果你在window和linux上打开相同的文件,它们看起来仍然不同。我在打开新文件linux时打开Windows上的旧文件。

1 个答案:

答案 0 :(得分:4)

如果您想在Windows系统上读取和写入二进制文件,则需要在打开它们时指定:

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

并写作:

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

另外,在使用文件句柄之前,不要忘记检查打开是否成功。 (file != NULL