#include<stdio.h>
#include<stdlib.h>
#define N 100
int main()
{
FILE *fp;
int i, n, x, a[N], s;
fp = fopen("E:\\aa.txt", "r");
n = 0;
while (1) {
fscanf(fp, "%d", &x);
if(feof(fp)) break;
a[n] = x;
n++;
}
printf("n=%d\n", n);
for (s = 0, i = 0; i < n; i++)
s+=a[i];
printf("s=%d\n", s);
fclose(fp);
return 0;
}
在aa.txt文件中输入1 2 但是在读取程序结果的时候发现是5,于是在中间插入了一个printf函数之后发现 是把最后一个数字2读取了两遍
后来查阅相关资料发现 feof有一个初始值 上程序的判断顺序
初始值
1
2
这就导致2会被读取两次
于是修改了程序
while (!feof(fp)) {
fscanf(fp, "%d", &x);
a[n] = x;
n++;
}
这样修改后就能得到正确的结果
此时的判断顺序为
1
2