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 ???

所以当然,当我害怕时,我只会得到 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 回答