gpt4 book ai didi

c - 尽管表达式变为假,但 while 循环不退出

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:48 27 4
gpt4 key购买 nike

我这里有一个程序,它在指定的 void 方法中包含一个 do-while 循环。我试图退出函数内的循环,以便 do-while 循环真正按预期工作。除了在我运行程序并且发生其中一种情况之后,程序继续运行,尽管我的 while 语句声明它应该只工作 while(userInput != 1)。我不能使用全局变量来解决这个问题,因为我的任务限制了我使用这种技术,因此非常感谢任何帮助!

这是我的代码片段:

void functionTest()
{
int gameOver = 0;
int userInput;

do
{
printf("please enter a number 1-3");
scanf("%d",&userInput);

switch(userInput)
{
case 1:
printf("You entered %d",userInput);
gameOver = 1;
break;

case 2:
printf("You entered %d",userInput);
gameOver = 1;
break;

case 3:
printf("You entered %d",userInput);
gameOver = 1;
break;
}
}
while(gameOver!= 1);
}
}

最佳答案

问题可能出在您使用 scanf() 时。您在按回车键之前输入的不是 1、2 或 3。当它要求您输入选项时,您能告诉我们您输入的确切内容吗?

有时,在使用新的 scanf() 之前需要刷新标准输出。在 scanf 行之前尝试 fflush(stdout) 。参见 older question 1older question 2 .

编辑:如果我输入除“1”、“2”或“3”之外的任何内容,我可以很容易地重现问题...

我建议您在执行 switch 语句之前执行以下操作:

  1. 在 scanf() 之前添加 fflush(stdout)
  2. 接受字符串 (%s) 而不是数字的输入。 (需要字符 [])
  3. 修剪字符串的尾随和前导空格。
  4. 使用库函数转换为数字
  5. 然后根据该数字切换大小写

关于c - 尽管表达式变为假,但 while 循环不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26805898/

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