テキストファイルからいくつかの値を読み込み、それらの平均値を見つけるために以下のコードを書きましたが、何らかの理由でwhileループに入ったときにファイルがどこで終わるかはわかりません。なぜそれが起こるのか、どうすればそれから出ることができるのか教えていただければ幸いです。ありがとうございました。ファイルから値を読み取っているときにループ外に出ることができない
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main(){
int total, grade, n;
float a;
total = 0;
n = 0;
FILE *file;
file = fopen("grades.txt", "r");
if((file = fopen("grades.txt", "r")) == NULL) {
puts("Error");
exit(0);
}
while (!(feof(file))) {
if (!(fscanf(file, "%d",&grade) ==-1)){
total = total + grade;
n++;
printf("%d\n", total);
}
else {
break;
}
}
fclose(file);
a = total/n;
printf("The average is %f", a);
getch();
}
数字以外の予期しない文字が含まれています。例えば、「88.5」は小数点を含む。 – BLUEPIXY
無限ループには関係ありません.fopenを冗長呼び出ししています。 – codeforester