【发布时间】:2016-10-15 16:29:14
【问题描述】:
我目前面临一个问题,我想将结构保存在二进制文件中,但结构的大小似乎每次都是错误的。
这是我的结构代码:
typedef struct {
int lines;
int columns;
int ** matrix;
char * name;
} labyrinthe;
这就是我将它保存在文件中的方式:
void writeInFile (labyrinthe * l, FILE * f) {
fwrite(l, sizeof(l), 1, f); //already tried with &l instead of l
}
但是,即使矩阵大小是 111*111 网格,该文件也始终包含 22 个字节。任何帮助将不胜感激。
感谢阅读。
【问题讨论】:
-
L 是一个指针,您正在获取所述指针的大小。在 sizeof 中尝试 *l。但是你有更大的问题,因为你的结构也包含指针。你需要以某种方式编组它,这并不容易。
-
您不会以这种方式保存数据,它必须与
struct一样归档,但指针将无关紧要。数据不是结构的一部分,只是指向数据实际在内存中的位置的指针。当您稍后读回数据时 - 您将不得不再次分配内存,就像您最初所做的那样。所以你必须以这样一种方式归档数据,当你从文件中读回数据时,你可以重新创建你拥有的数据结构。
标签: c struct binaryfiles