【发布时间】:2010-11-11 15:05:38
【问题描述】:
我是 C 的新手,我在使用 fwrite 时遇到了问题。
我希望使用一个包含两个值的结构:
struct keyEncode{
unsigned short key[2];
unsigned short encoded[2];
};
然后我在 main 中声明我的结构和指向该结构的指针:
struct keyEncode keynEncode;
struct keyEncode *storedVal = &keynEncode;
然后我将值分配给结构并希望使用 fwrite 将结构写入文件:
keynEncode.key[0] = k1[0];
keynEncode.key[1] = k1[1];
keynEncode.encoded[0] = p[0];
keynEncode.encoded[1] = p[1];
// i tried to use storedVal.key[0] = k1[0]; but i was getting compile errors
fwrite(storedVal, sizeof(storedVal), 0xffff, fp);
现在我的问题是 fwrite 没有向文件写入任何内容。
我哪里错了?
【问题讨论】:
-
删除了 C++ 标签,因为这是 C 代码。
-
0xffff 是什么?你正在写 65k 条记录?不,这里应该是 1。
-
你正在做的事情可以想象是好的,但一般来说,编译器被允许在结构的成员之间插入填充。因此,仅将
struct的二进制表示写入磁盘不会在编译器和/或编译器版本和/或编译器设置之间产生一致的结果。