我正在为我的 C 入门课程编写一些非常小的程序。其中之一需要我读取双精度值,每行一个数字,然后在 EOF 之后打印出基本统计信息。这是给我带来问题的代码段:
double sample[1000000];
int result;
double number;
int i = 0;
int count = 0;
double sum = 0;
double harmosum = 0;
result = scanf(" %lf \n", &number);
double min = number;
double max = number;
while(result != EOF){
sample[i] = number;
if(number < min){
min = number;
}
if(number > max){
max = number;
}
sum += number;
if(number != 0){
harmosum += (1 / number);
count++;
}
i++;
result = scanf(" %lf \n", &number);
}
在此之后,我根据数字计算并打印一些统计数据。
我的问题是,我永远不会离开扫描每一行的循环。为什么是这样?当我在 Windows 上按下 EOF 键(CTRL-Z?)时,控制台会说:
^Z 暂停
就是这样。程序中没有其他内容运行。我尝试从文本文件中获取输入,但也没有检测到文件的结尾。我应该如何修复这个循环?注意我只能使用基本的 scanf() 没有函数的变化。谢谢!