【发布时间】:2017-11-02 10:43:13
【问题描述】:
我只被允许使用标准 c 库,所以 fpurge() 不是我的选择。
int dim = 0;
int c = 0;
printf("Please enter a number");
while ( (( c = scanf("%d",&dim)) != 1 ) || (dim < 1) || (dim > UCHAR_MAX) )
{
if (c == EOF)
{
return 0;
}
fflush(stdin);
printf("[ERR] Enter a number\n");
printf("Please enter a number");
}
程序应该读取一个大于 1 的数字,如果有任何“错误”输入(如字母),它应该传递一个错误消息。它在我的 windows 电脑上与 fflush 一起工作,程序应该在 Linux 系统上运行。
如何替换 fflush 程序仍然可以工作?因为当我不使用它时,我会陷入无限循环。
输入的数字决定了某行代码在程序的其余部分中使用的频率,这就是我需要数组的原因。
【问题讨论】:
-
为什么不能使用
fflush?这是标准库的一部分。 -
@Iguananaut 是的,但这是错误的用法。
-
确实,我还没读到那么远。
-
不要使用
scanf,而是使用fgets并自己解析输入。然后你不需要冲洗任何东西。scanf对用户输入不是很有用。