文件I / O混乱

时间:2013-02-21 17:17:11

标签: c file io

我今天刚开始使用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循环吗?为什么它会在一个额外的时间内执行循环?

1 个答案:

答案 0 :(得分:1)

您的终端会切断输出的第一行,因为它太长了。