在"Unix环境中的高级编程"一书中,有一部分(第8.14页,第251页),其中作者向我们展示了"acct"结构的定义(用于存储会计记录信息).然后,他显示了一个程序,在该程序中,他将会计数据从文件读入结构(其中的关键部分):
fread (&acdata, sizeof(acdata), 1, fp)
Run Code Online (Sandbox Code Playgroud)
我遇到的麻烦是我听说C编译器有时会在内存中重新排列结构元素,以便更好地利用空间(由于对齐问题).因此,如果此代码只是获取文件的所有内容并将其粘贴到acdata中(并且文件的内容被排列为与结构定义中指定的顺序相匹配),如果某些元素的元素已被移动,那么如果我在代码中引用它们,我可能无法得到我所期望的(因为文件中的数据没有像结构在内存中那样重新排列).
我错过了什么(因为从我得到的东西看起来不太可靠)?
谢谢你的帮助(道歉,如果我在程序上做错了 - 这是我第一次发帖)