gpt4 book ai didi

c - 只允许数字继续使用 while 和 scanf

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:41 25 4
gpt4 key购买 nike

我正在制作一个程序,在开始时它说请输入任何数字以继续。我想限制字符的输入。我尝试使用下面显示的代码,但是一旦我输入另一个键而不是数字,该过程将无限期重复,它不会让我第二次输入键。

考虑到该选项被声明为 int,这里是我使用的逻辑:

option = 0;
while(option < 1 || option > 9)
{
printf("\nPlease press any number to continue and press enter: ");
scanf("%d", &option);
}

在此先感谢您的帮助

最佳答案

scanf 由于输入不是数字而失败时,输入将保留在流中。因此,当您点击循环的下一次迭代时,它会读取相同的内容并以相同的方式再次失败。

相反,您应该在输入失败时采取一些其他操作,例如

if ( scanf("%d", &option) != 1 )
{
printf("You didn't enter a number.\n");
break;
}

在这种情况下,您可能还想刷新输入(即丢弃伪造的字符)。据推测,伪造字符是由某人输入的,然后按 Enter 键,因此您只需读取并丢弃所有字符,直到换行符。这样做的一种方法(有几种,包括花哨的 scanf 格式字符串)是:

for ( int ch; (ch = getchar()) != EOF && ch != '\n'; ) { }

关于c - 只允许数字继续使用 while 和 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25500329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com