gpt4 book ai didi

c - 文件 I/O 困惑

转载 作者:行者123 更新时间:2023-11-30 15:51:35 24 4
gpt4 key购买 nike

我今天刚刚开始使用 FILE I/O,我在这里很困惑。下面代码中的 while 循环给出了一个奇怪的输出。它从 i = 1 开始打印 i,然后打印 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 循环吗?为什么它要额外执行一次循环?

最佳答案

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

关于c - 文件 I/O 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com