写入/从一个文件读入结构的结构
问题描述:
可以说我有以下结构:写入/从一个文件读入结构的结构
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。
@ChikChak为什么你认为它不应该工作? –
是的,它会工作,只要你回读到相同类型的机器(相同的字母顺序) – pm100
@MichaelWalz我不确定'read'和'write'函数是否可以“回溯”结构 – ChikChak