设有以下结构体类型: struct st { char name[8]; int num; float s[4]; } student[50];

. 设有以下结构体类型:
struct st {
char name[8];
int num;
float s[4];
} student[50];
并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,以下不正确的形式是

(A) fwrite(student, sizeof(struct st), 50, fp)
(B) fwrite(student, 50 * sizeof(struct st), 1, fp)
(C) fwrite(student, 25 * sizeof(struct st), 25, fp)
(D) for(i=0; i<50; i++) fwrite(student+i, sizeof(struct st), 1, fp)

c选项会怎样

fwrite的第一个参数是一个指针
第二个参数是第一个参数指向元素的大小
第三个参数是第一个指针指向多少个这样的元素,就相当于你要写入多少个第二个参数大小的元素

假设A选项,那么写入的字节数就是sizeof(struct st)*50,也就是50个结构体的大小,符合题意

如果是C,那么写入的字节数就是25 * sizeof(struct st)* 25,25的平方是一个很大的数啊,就相当于写入25*25个struct st大小的字节数,显然有问题
温馨提示:答案为网友推荐,仅供参考
相似回答