如何使用fwrite将结构写入文件?

mol*_*man 3 c file-io struct file

我对C很新,我遇到了fwrite问题.

我想使用一个包含两个值的结构:

struct keyEncode{
    unsigned short key[2];
    unsigned short encoded[2];
};
Run Code Online (Sandbox Code Playgroud)

然后我在main中声明我的struct和指向该struct的指针:

struct keyEncode keynEncode;
struct keyEncode *storedVal = &keynEncode;
Run Code Online (Sandbox Code Playgroud)

然后我为结构赋值,并希望使用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);
Run Code Online (Sandbox Code Playgroud)

现在我的问题是fwrite没有写任何文件.

我哪里错了?

Jac*_*ack 15

您正在使用sizeof指针,这不会计算有效结构的大小,而是指向其中一个指针(可能是4或8个字节).试试sizeof(struct keyEncode)(sizeof(keyEncode)如果您使用C++就足够了).

然后我不明白为什么你0xFFFF有数,不应该只是1