假设我有以下结构:
typedef struct s1 {
int field1;
int field2;
struct s2 otherStruct;
};
s2
是我制作的其他结构:
typedef struct s2 {
double field1;
char unit;
};
如果我用
s1 s;
s.field1 = 1;
s.field2 = 2;
s.otherStruct.field1 = 42;
s.otherStruct.unit = '!';
write(file_descriptor, &s, sizeof(s));
然后:
read(file_descriptor, &s, sizeof(s));
它会起作用吗?我的意思是,当我尝试将 s
写入文件时,它会正确写入 s
的所有字段吗?另外,它会正确读回所有内容吗?
最佳答案
如果您使用相同的编译器、相同的编译器标志编译代码并在同一台机器上运行它,并且从不更改结构的定义,这将起作用。改变任何东西,你都会读到垃圾。
要以更具弹性和便携的方式解决此问题,请考虑 Google's protobufs或 Cap'n proto .
关于c - 从文件写入/读取结构中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43615644/