fwrite不会在C中保存完整数组

Lou*_*uis 0 c c++ fwrite fread

我有一个668x493的数组,我想保存.所以我正在做以下事情.

data:是一个指向保存值的数组的指针.

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

但是,当我读回这个数组时:

char* check_image;

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

fseek (p1File , 0 , SEEK_END);
lSize = ftell (p1File);
fseek (p1File , 0 , SEEK_SET);
Run Code Online (Sandbox Code Playgroud)

当我检查lSize时,我看到它327680 ???

所以,当我做恐惧时,我只获得327680值!

请问,你能指出我的错误吗?

Ste*_*end 10

有趣的是,327680是4096(80*4096)的精确倍数.

您是否在重新读取数据之前刷新/关闭输出文件?


Mil*_*lan 5

fwrite()功能是缓冲的.尝试刷新文件流上的数据,然后重试.