0

我有一个结构:

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);
4

1 回答 1

0

来自 TFM

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

您只尝试一次 fread 和 fwrite;不能保证他们在一次通话中完成。

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

更新 你打电话 fread 错了

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

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

于 2013-10-10T03:10:51.800 回答