1

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à]

**-----気にしないで、問題を理解しました。ウィンドウと Linux で同じファイルを開いた場合でも、見た目は異なります。Windows で古いファイルを開き、新しいファイル Linux を開きます。

4

1 に答える 1

4

Windows システムでファイルをバイナリとして読み書きする場合は、読み取り用にファイルを開くときに次のように指定する必要があります。

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

そして書くために:

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

また、ファイルハンドルを使用する前に、オープンが成功したかどうかを確認することを忘れないでください。( file != NULL)

于 2012-10-08T16:17:12.410 に答える