如何使用fwrite()多次写默认结构值

Ama*_*ain 1 c

我想使用fwrite将一个默认结构N次写入文件.

typedef struct foo_s {

 uint32 A;
 uint32 B;
 char desc[100];

}foo_t;

void init_file(FILE *fp, int N)
{
   foo_t foo_struct = {0};
   foo_struct.A = -1;
   foo_struct.B =  1;

   fwrite(&foo_struct, sizeof(foo_struct), N, fp);    }
Run Code Online (Sandbox Code Playgroud)

上面的代码没有将foo_struct写入文件流fp N次.

相反,它将从&foo_struct开始的N*sizeof(foo_struct)字节写入fp.

任何人都可以告诉如何用一个fwrite实现相同的目标吗?

Fer*_*cio 11

你不能用一个fwrite().你必须使用一个循环:

int i;
for (i = 0; i < N; ++i)
    fwrite(&foo_struct, sizeof(foo_struct), 1, fp);
Run Code Online (Sandbox Code Playgroud)

fwrite()的第三个参数是要写入的对象数,而不是写入单个对象的次数.