从C中的内存中读取结构数据?

时间:2014-12-03 02:57:53

标签: c file struct fwrite fread

我有以下结构:

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

创建结构的一个实例并设置其下一个'和#EOC'相应的值,我通过C fwrite函数将结构写入文件。我现在想读下一下' next'和#EOC'从那个文件。我的问题是:这两个int变量如何存储在内存中?一旦我调用fseek将文件指针移动到文件中的正确字节,我会读取多少字节以获得' next'或者' EOC'?

1 个答案:

答案 0 :(得分:4)

如果文件写在您阅读的同一台机器上,则:

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

你写的大小是结构的大小;您阅读的大小是结构的大小。您测试返回值;根据我写的内容,它们将为0或1,0表示问题,在此情况下成功1次。

如果您的文件是开放的阅读和写作,写完后,您需要sizeof(entry)向后搜索,然后阅读。

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