作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我今天刚刚开始使用 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/
我是一名优秀的程序员,十分优秀!