【发布时间】:2017-07-16 06:28:50
【问题描述】:
我有这个函数来查找文件中带有未知文本(“ADS 50 d 15”)的数字的最大值和最小值。它仅适用于文件中的数字,但当有字符时它会停止。
{
int n;
int min = INT_MAX, max = INT_MIN;
int flag = 0;
rewind(f);
while (fscanf(f, "%d", &n) != EOF)
{
if (ferror(f))
{
perror("Error:");
}
if (flag == 0)
{
min = n;
max = n;
flag = 1;
}
if (min>n)
min = n;
if (max<n)
max = n;
}
printf("\nMax value: %d\nMin value: %d\n", max, min);
}
【问题讨论】:
-
如果输入与整数不匹配,fscanf 返回 0,而不是
EOF。另请注意,ferror(f)只能在fscanf已返回EOF时为真,因此您的if永远不会运行。