私は入門用の C コース用に非常に小さなプログラムをいくつか書いています。そのうちの 1 つは、1 行に 1 つの数値で double 値を読み取り、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() しか使用できないことに注意してください。ありがとう!