2014-12-03 38 views
1

我有以下结构:从C中的内存读取结构数据?

struct entry 
{ 
    int next; 
    int EOC; 
} entry; 

创建结构的实例,并设置其“下一个”和“平机会”值。因此,我写的结构来通过C fwrite的功能的文件之后。我现在想从该文件中读取'next'和'EOC'的值。我的问题是:这两个int变量如何存储在内存中?一旦我调用fseek将文件指针移动到文件中的正确字节,我会读取多少字节来获取'next'或'EOC'的值?

回答

4

如果你读它,然后将文件在同一台机器上写着:

  • 你写与fwrite(&entry, sizeof(entry), 1, fp)
  • 您使用fread(&entry, sizeof(entry), 1, fp)阅读。

你写的大小是结构的大小;你读的大小是结构的大小。你测试返回值;根据我写的内容,它们可以是0或1,0表示在这种情况下出现问题和成功。

如果您的文件在读写时打开,写完后,您可以通过sizeof(entry)向后寻找然后阅读。

如果你的文件是写在不同类型的机器上,那么你可能不得不担心基本数据类型的大小和两个系统的字节顺序的不同以及更复杂的结构,您可能不得不担心打包和对齐规则。有处理这些问题的方法(并且它们比单个fwrite()fread()调用更复杂)。

+1

如果您与您的祖父大型机进行互操作,您可能还担心负整数的布局! – Persixty 2014-12-03 08:29:11

+0

这正是我所期待的。谢谢! – 2014-12-03 23:33:00