简单的C语言 文件问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:56:39
有以下程序:
#include<stdio.h>
void 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(fp,-2L*sizeof(int),SEEK_END);
fread(&b,sizeof(int),1,fp);
fclose(fp);
printf("%d\n",b);
}

上机试过,执行后输出结果怎么是3?我怎么感觉是1呀?
谢谢回答!

当然是3阿。。

fseek 将文件指针原来指向EOF, 后来左移2*sizeof(int),也就是说,指向了3了,输出当然就是3阿

fseek(fp,-2L*sizeof(int),SEEK_END);
是将文件指针移到文件结尾的前2个数据前