2012-01-09 2 views
2

1つのPNGファイルからデータを読み込み、このデータを新しいファイルに書き込んで保存します。 私はそのようなものを実行します。私はそれだけで、二番目のファイルのみがその内容であることを、問題を持っているpngファイルからデータを読み込んで新しいファイルに保存する必要がありますか? C++

FILE *fp = fopen("C:\\dev\\1.png", "rb"); 
fseek(fp, 0, SEEK_END); 
long size = ftell(fp); 
rewind(fp); 
char *buffer = (char*)malloc(sizeof(char)*size); 
size_t result = fread(buffer, 1, size, fp); 
FILE *tmpf = fopen("C:\\dev\\1_1.png", "wb"); 
fputs(buffer, tmpf); 
fflush(tmpf); 
fclose(tmpf); 

:‰PNGのSUB

デバッグでは、私は=、長いサイズをチェックしています652521、およびsize_tの結果は同じ大きさを持っている... は理解していない、なぜ私は2番目のファイルにすべてのデータを書き込むことはできません...

+0

'のはsizeof(文字)* size'は常に'等しい、私が使用するべき –

+0

ナ...私が見つけた解決策をsize': fwrite(バッファ、1、結果、tmpf); –

+0

'fread()'やその他のファイル操作は成功しますか? – hmjd

答えて

4

fputsを使用しないでください - fwrite使用 - fputsをするためにあります最初のゼロバイトで終了します。

変更:

fputs(buffer, tmpf); 

へ:

fwrite(buffer, 1, size, tmpf); 
関連する問題