gpt4 book ai didi

在 C 中导致无限循环的字符输入

转载 作者:行者123 更新时间:2023-12-01 12:42:04 25 4
gpt4 key购买 nike

好的,所以我在几个地方搜索了这个问题的答案,我在 C++ 中找到了同样问题的答案,但它涉及清除 cin 和那些东西,我不确定如何将其转换为 C。如果这实际上是在其他地方回答的,我提前道歉,我只是错过了。另外,请记住,我基本上是在自学 C,除了您在这段代码中看到的内容,我知道的不多。

基本上,我的问题是这样的:我正在运行一个要求输入的循环,然后使用 switch 语句来选择发生什么。 switch 采用一个 int,它可以很好地处理任何数字输入。但是,当您输入 char 时,它只会无限循环,没有机会输入任何其他内容。

假设这与我查找的 C++ 示例中的问题相同 - 但我不是 100% 确定 - 当我输入 char它被添加到缓冲区中,并且永远不会被清除,因此每次循环时都会再次使用无效输入。清除缓冲区在 C++ 中似乎很简单,但我无法在 C 中找到任何我能理解的内容。

这是我的代码,供引用:

int main()
{


while(1)
{
printf("(1-10) -> Run a program | (-1) -> Display menu | (0) -> Quit : ");

int quit = 0;
int select;
scanf("%d", &select);
switch(select)
{
case 1:
printf("%s", pgmRun);
helloWorld();
printf("%s", pgmEnd);
break;

//More cases here

case 0:
quit = 1;
break;
default:
printf("\n");
printf("Error: Invalid input\n");
printf("\n");
}

if(quit == 1)
break;
}
return 0;
}

在此先感谢您的帮助,对于这么长的帖子深表歉意。我倾向于长篇大论。 :P

最佳答案

fflush(stdin) 具有未定义的行为。如果要丢弃在 scanf() 调用后输入的字符,可以读取并丢弃它们。
您可以使用 getchar() 来清除字符。

关于在 C 中导致无限循环的字符输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23421014/

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