包含与二进制文件之间的数组的读/写结构

时间:2013-10-10 03:06:19

标签: struct fwrite fread

我有一个结构:

typedef struct codeKey_s {
    unsigned char shortest;
    unsigned char longest;
    unsigned char lengths[256];
    int table[256];
} codeKey_t;

正如您所看到的,我有静态大小的值类型数组。我的问题是当我保存,然后从二进制文件中读取它们两个数组都是空的。我看到其他人使用char *字符串进行此工作,那么是什么给出了?

以下是我的写/读语句:

fwrite(codeKey, sizeof (codeKey_t), 1, file);

codeKey_t* retCodeKey = (codeKey_t*)malloc(sizeof(codeKey_t));
fread(retCodeKey, sizeof(codeKey_t*), 1, readFile);

1 个答案:

答案 0 :(得分:0)

来自TFM

On success, fread() and fwrite() return the number of items read or written.

你只是尝试过一次畏惧和fwrite;它不能保证他们在一个电话中完成。

另一个问题是时间 - 你是否在fwrite之后不久打开并查看文件,可能在关闭写文件句柄之前?如果是这样,您可能需要在读取之前刷新写文件句柄。

<强>更新 你打电话给fread错了

fread(retCodeKey, sizeof(codeKey_t*), 1, readFile);

将指针类型的大小传递给size参数。