扫描整数的基本 while 循环
Basic while loop to scanf an integer
我正在尝试创建一个 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,不能使用全局变量
如果输入字符与转换不匹配,它会留在输入流中,影响下一次读取 - 您必须使用 getchar
或 fgetc
删除它.
while ( scanf( “%d”, &minBet ) < 1 )
{
getchar();
printf( “You entered a non-numeric value, try again: );
}
当您键入 e 时,您键入 e,然后按 ENTER 键。所以输入缓冲区中现在有 2 个字符。 scanf("%d")
读取 e ,但换行符仍在输入缓冲区中。
解决您当前问题的一个更简单的方法是在每个 scanf("%d")
之后添加一个 getchar()
。此代码将起作用。
#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);
是 wrong.It 应该是
printf("Enter integer \n");
我正在尝试创建一个 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,不能使用全局变量
如果输入字符与转换不匹配,它会留在输入流中,影响下一次读取 - 您必须使用 getchar
或 fgetc
删除它.
while ( scanf( “%d”, &minBet ) < 1 )
{
getchar();
printf( “You entered a non-numeric value, try again: );
}
当您键入 e 时,您键入 e,然后按 ENTER 键。所以输入缓冲区中现在有 2 个字符。 scanf("%d")
读取 e ,但换行符仍在输入缓冲区中。
解决您当前问题的一个更简单的方法是在每个 scanf("%d")
之后添加一个 getchar()
。此代码将起作用。
#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);
是 wrong.It 应该是
printf("Enter integer \n");