【发布时间】:2015-09-26 02:28:01
【问题描述】:
我在下面使用了一个while循环:
do {
scanf("%c", &turnChoice);
if (turnChoice == 'r')
{
invalidSelection = false;
}
else if (turnChoice == 'h')
{
invalidSelection = false;
}
else
{
printf("Invalid input.\n");
}
} while (invalidSelection == true);
但是,在停止用户输入之前,它会运行一次完整的循环(因此它会显示“无效输入”,然后要求用户输入一个字母)。我做错了什么?
【问题讨论】:
-
很可能之前的代码在输入缓冲区中留下了一个字符。
-
之前没有输入任何字符(我只是声明变量;没有初始化)
-
这是一个 do...while 循环。总是执行一次。你想要一个while循环,在循环之前评估。 cprogramming.com/tutorial/c/lesson3.html
-
@DomB 所以这是你程序中的第一个输入?在此之前没有按键?在此之前没有运行任何输入的代码?我觉得这很难相信。
-
@DomB 所以这是你的问题。先前的代码在该代码正在读取的输入缓冲区中留下了一个字符。由于它可能不是“h”或“r”(很可能是换行符/回车),因此这段代码告诉您它是无效的。
标签: c while-loop scanf