int findMaxAndMinValues(FILE *file)
{
int current_number, max_number = INT_MIN, min_number = INT_MAX;
rewind(file);
while (fscanf(file, "%d", ¤t_number)!=EOF)
{
printf("%d \n", current_number);
if (current_number > max_number) max_number = current_number;
if (current_number < min_number) min_number = current_number;
}
printf("Max: %d, Min: %d\n", max_number, min_number);
return 0;
}
所以這工作正常,如果文本文件只充滿數字(和空格/新行相應)。但是如果我有一個角色,它會在遇到角色之前開始循環讀取它讀取的最後一個數字。 這是文本文件:C fscanf永遠不會返回EOF
1
2
3 4 5
16
12312
hello
而結果就是12312每行不休更新。
旁邊的問題:有沒有更好的方法來找到文本文件中的最小/最大值的數字? %s的fscanf而不是fscanf? 編輯:謝謝你的回答,這裏是我如何固定它:
int findMaxAndMinValues(FILE *file)
{
int current_number, max_number = INT_MIN, min_number = INT_MAX;
int temp;
rewind(file);
while ((temp=fscanf(file, "%d", ¤t_number))!=EOF)
{
if (!temp) { fgetc(file); }
else {
printf("%d \n", current_number);
if (current_number > max_number) max_number = current_number;
if (current_number < min_number) min_number = current_number;
}
}
printf("Max: %d, Min: %d\n", max_number, min_number);
return 0;
}
你忘了問一個問題。你沒有代碼來讀取你的文件中的「hello」,所以沒有任何東西會讀取它,所以你永遠不會到文件的末尾。 –