我有以下结构:
struct entry
{
int next;
int EOC;
} entry;
创建结构的一个实例并设置其下一个'和#EOC'相应的值,我通过C fwrite函数将结构写入文件。我现在想读下一下' next'和#EOC'从那个文件。我的问题是:这两个int变量如何存储在内存中?一旦我调用fseek将文件指针移动到文件中的正确字节,我会读取多少字节以获得' next'或者' EOC'?
答案 0 :(得分:4)
如果文件写在您阅读的同一台机器上,则:
fwrite(&entry, sizeof(entry), 1, fp)
撰写。fread(&entry, sizeof(entry), 1, fp)
阅读。你写的大小是结构的大小;您阅读的大小是结构的大小。您测试返回值;根据我写的内容,它们将为0或1,0表示问题,在此情况下成功1次。
如果您的文件是开放的阅读和写作,写完后,您需要sizeof(entry)
向后搜索,然后阅读。
如果您的文件是在不同(类型)的机器上编写的,那么您可能不得不担心基本数据类型的大小,两个系统的字节序以及更复杂的结构的差异,您可能也不得不担心包装和对齐规则。有一些方法可以解决这些问题(而且它们比单个fwrite()
和fread()
调用更复杂。