从文件写入/读取结构中的struct

时间:2017-04-25 15:58:56

标签: c file struct

假设我有以下结构:

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的所有字段吗?此外,它会正确读回所有内容吗?

1 个答案:

答案 0 :(得分:2)

如果您使用相同的编译器编译代码,相同的编译器标记,并在同一台机器上运行它,并且永远不会更改结构的定义,这将有效。改变一切,你会读垃圾。

要以更具弹性和便携性的方式解决此问题,请考虑Google's protobufsCap'n proto