C++ do...while 使用 getchar 函数循环重复打印

C++ do...whille loop duplicate prints with getchar function

当输入与 3 不同时,下面的代码将打印 "Menu" 两次。

do{
    puts("Menu");
    option = getchar();
}
while (option != '3');

你只需要刷新你的标准输入。当您的程序到达 getChar 时,它会找到换行符,并将其作为输入字符处理。

如果您没有设置使用 getChar() 检索输入,更好的选择可能是使用 std::cin,因为它更智能地处理白色 space

您还可以通过在从输入中检索字符之前添加行 fseek(stdin,0,SEEK_END); 来刷新输入。

或者您可以 运行 一个 if 语句来检查检索到的字符是否为换行符

if ( option != '\n' ) {
 ...
}

也看到这个答案Using getchar() on c gets the 'Enter' after input

快速修复:

do{ puts("Menu"); std::cin >> option; } while (option != '3');