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

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

最佳答案

如果您使用相同的编译器、相同的编译器标志编译代码并在同一台机器上运行它,并且从不更改结构的定义,这将起作用。改变任何东西,你都会读到垃圾。

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

关于c - 从文件写入/读取结构中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43615644/

相关文章:

c - C 无效二进制文件中的错误消息

c - 检测字符串中的元音

c - 为 Windows 编写自己的备忘录

python - Python Mutagen覆盖mp3专辑封面

c# - 读取文件特定行号的有效方法。 (奖金 : Python Manual Misprint)

c - "step"不是在程序结束时结束程序,而是在另外 5 个 "step"之后结束

java - 通用标志的 Android 2.3 ZIP 问题

c++ - 在c++代码中,下列关键字是什么意思? SIGSELECT、U32、U16、U8

c - 如何检查初始化的结构是否为空?

c - 指向结构 argv 赋值的指针