我正在尝试创建一个C程序,允许用户输入大于0的整数,但如果输入任何其他类型,则让用户再次尝试,直到输入整数。
int minBet;
printf("Enter integer"\n);
while(scanf("%d",&minBet)!=1)
{
printf("Must be an integer value greater than 0\n");
scanf(" %d",&minBet);
}
当输入非整数值时,printf语句无限循环。我怎么解决这个问题?
只能使用stdio.h和NO全局变量
答案 0 :(得分:1)
如果输入字符与coversion不匹配,则它会在输入流中留下以填充下一个读取 - 您必须使用getchar
或fgetc
来删除它。 / p>
while ( scanf( “%d”, &minBet ) < 1 )
{
getchar();
printf( “You entered a non-numeric value, try again: );
}
答案 1 :(得分:0)
当您输入 e 时,键入 e ,然后按ENTER键。所以输入缓冲区中现在有2个字符。 scanf("%d")
读取 e ,但换行符仍在输入缓冲区中。
对您当前问题的一个更简单的解决方案是在每个getchar()
之后添加scanf("%d")
。这段代码可行。
#include <stdio.h>
#include <string.h>
int main(void)
{
int minBet;
printf("Enter integer \n");
while(scanf("%d",&minBet)!=1)
{
getchar();
printf("Must be an integer value greater than 0\n");
}
}
此外,您的代码printf("Enter integer"\n);
是错误的。它应该是
printf("Enter integer \n");