我今天刚开始使用FILE I / O,我在这里很困惑。下面代码中的while循环给出了一个奇怪的输出。它从i
开始i = 1
,然后a[1] = ..
,但在while循环之外,我已指定i = 0
。进入while循环后i
为什么会增加到1的任何原因?令人困惑的是,最后的for循环是正确打印a[0] = 0
!
#include <stdio.h>
#include <stdlib.h>
#define N 11
int main()
{
FILE *fp;
int i, a[N];
fp = fopen("numbers.txt", "w");
for(i = 0; i < N; i++)
fprintf(fp,"%d\n",i);
fclose(fp);
fp = fopen("numbers.txt", "r");
i = 0;
while(!feof(fp))
{
printf("i = %d ",i);
fscanf(fp,"%d",&a[i]);
printf("a[%d] = %d\n",i,a[i]);
i++;
}
for(i = 0; i < N; i++)
printf("%d\n",a[i]);
return 0;
}
编辑:澄清了上述问题,现在又出现了混乱。读取文件中的最后一个数字后,feof(fp)不应返回非零值,从而终止while循环吗?为什么它会在一个额外的时间内执行循环?
答案 0 :(得分:1)
您的终端会切断输出的第一行,因为它太长了。