0

保存したいサイズ668x493の配列があります。だから私は次のことをやっています。

data : 値を保持する配列へのポインタです。

long lSize;
FILE* image_save;
image_save=fopen("image_save_file.bin","w+b");
fwrite(data,1,329324,image_save);

ただし、この配列を読み返すと:

char* check_image;

p1File=fopen("image_save_file.bin","r+b");

fseek (p1File , 0 , SEEK_END);
lSize = ftell (p1File);
fseek (p1File , 0 , SEEK_SET);

lSizeをチェックすると、327680と表示されます???

もちろん、私が fread を行うと、327680 の値しか得られません!

お手数ですが、私の間違いを特定していただけますか?

4

3 に答える 3

10

興味深いことに、327680 は 4096 の正確な倍数 (80 * 4096) です。

データを読み戻す前に、出力ファイルをフラッシュ/クローズしていますか?

于 2011-06-15T16:34:20.417 に答える
5

fwrite()関数はバッファリングされます。ファイル ストリームのデータをフラッシュして、もう一度やり直してください。

于 2011-06-15T16:32:13.350 に答える
2

fwrite は、書き込まれた実際のバイト数を示す int を返します。これが予想と異なることを再確認してください (ほぼ確実に違います)。次に、 perrorを使用して、発生しているエラーを出力できます。

于 2011-06-15T16:34:45.050 に答える