gpt4 book ai didi

c - 使用 C 的 do-while 循环

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

我在下面使用 while 循环:

do {

scanf("%c", &turnChoice);

if (turnChoice == 'r')
{
invalidSelection = false;
}

else if (turnChoice == 'h')
{
invalidSelection = false;
}

else
{
printf("Invalid input.\n");
}

} while (invalidSelection == true);

但是,在停止等待用户输入之前,它会运行一次完整的循环(因此它会显示“无效输入”,然后要求用户输入一个字母)。我做错了什么?

最佳答案

我的猜测是您在显示的代码之前有一些输入,一些以换行符结尾的输入,对吗?

这里的问题是,当您调用scanf 读取一个字符时,换行符仍在输入缓冲区中,因此换行符就是您读取和获取的内容。

有一个非常简单的“技巧”告诉 scanf 读取并丢弃前导空白(如换行符),那就是在前面加上一个空格格式字符串,所以尝试例如

scanf(" %c", &turnChoice);
// ^
// |
// Note space here

关于c - 使用 C 的 do-while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793021/

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