我有号码的列表在我*.txt
文件:如何从文件中读取数字并计算平均值?
1 2
3
称为numbers.txt
。我需要阅读它们并计算平均值,对于我的文件,它将是:(1 + 2 + 3)/3 = 2;
虽然我的代码显示了一些错误的结果,但它读了两次。为什么呢,如何解决它?
我的代码:直到读传文件的末尾尝试从测试feof()
测试fscanf()
while(fscanf(f, "%lf", &tmp) != EOF) {
printf("tmp = %f \n", tmp);
sum += tmp;
++ i;
}
feof(f)
#include <stdio.h>
#include <stdlib.h>
double fun(const char *filename)
{
double sum = 0, mean = 0, tmp = 0;
int i = 0;
FILE *f;
if((f = fopen(filename, "r")) == NULL)
{
exit(-1);
}
while(!feof(f))
{
fscanf(f, "%lf", &tmp);
printf("tmp = %f \n", tmp);
sum += tmp;
++ i;
}
i = i - 1;
mean = sum/i;
fclose(f);
printf("i = %d\n", i);
printf("sum = %f\n", sum);
printf("mean = %f\n", mean);
return mean;
}
int main(int argc, char **argv)
{
fun("numbers.txt");
return 0;
}
最好的解决办法是'int cnt; while((cnt = fscanf(f,“%lf”,&tmp)!= 1){'Then test'cnt'.EOF'表示EOF或IO错误,0表示未能转换为'double',1:表示1次成功转换。 – chux
括号中的数字在前面的注释中未对齐。 – BLUEPIXY