c语言,该程序输出结果为什麼是6而不是123456,什麼情况会输出123456

2024-11-22 18:21:20
推荐回答(2个)
回答1:

不可能输出1 2 3 4 5 6,因为每次循环fseek(fp,0l,0)都会使接下来的写操作从文件开头处写,等于依次在同一个位置写了1,2,3,4,5,6 所以最后的值为6

回答2:

每次循环fseek会把文件流的指针指向文件头部,最后为6。程序只调用了一次输出显示,循环输出才可以显示完全。
#include
2 int main()
3 {
4 FILE*fp;
5 int i=0;
6 int a[6]={1,2,3,4,5,6};
7 int k=0;
8 fp=fopen("data.dat","w+");
9 for(i=0;i<6;i++)
10 {
11 // fseek(fp,0L,0);
12 fprintf(fp,"%d\n",a[i]);
13 }
14 rewind(fp);
15 for(i=0;i<6;i++)
16 {
17 fscanf(fp,"%d",&k);
18 printf("%d\n",k);
19 }
20 fclose(fp);
21 // printf("%d\n",k);
22 return 0;
23 }