C语言-文件-题目

#include <stdio.h>
main()
{ FILE *fp;
int i , a[6]={1,2,3,4,5,6},k;
fp=fopen("data.dat","w+");
for (i=0;i<6;i++)
{fseek(fp,0L,0); fprintf(fp,"%d\n",a[i]);}
rewind(fp);
fscanf(fp,"%d",&k);
fclose(fp);
printf("%d\n",k);
} 答案为什么是6

第1个回答  2015-04-16
分析一下程序你就明白了:
fseek(fp,0L,0)的作用是把文件的内部指针指向距离文件头0字节的位置,fprintf(fp,"%d\n",a[i])是把a[i]的值写入文件指针所指的位置。由于该条语句是在for循环中,所以会依次获取a[0]~a[5]的值,但每次指针都是先通过fseek(fp,0L,0)定位在文件头0字节处,所以每次都是将a[i]的值写在文件开头的位置。最后一次写入的是a[5],其值是数组中的最后一个,即6。执行完rewind(fp)指令后,文件指针指向文件头。然后输入文件指针所指地方的值到K中,此时文件的第一个数据是最后一次写入的6,所以在printf("%d\n",k)时,k的值是6。本回答被提问者采纳