广发聪明卡申请:请教一个C语言的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 15:42:10
有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前2*sizeof(int)字节)
#include<stdio.h>
main()
{ FILE *fp; int i; a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat","rb");
fseek(&b,sizeof(int),1,fp);
fclose(fp);
printf("%d\n",b);
}
执行后输出结果是
A)2 B)1 C)4 D)3
答案是D.可是我觉得按照提示,应该从文件末尾向前移4个字节吧.那就是移动两个位置啊.这样不就应该是选A吗

你的程序里面是sizeof(int)啊,只移动了1个位置

2L*sizeof(int)
才是3
对于本程序,你的答案是对的