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');
当输入与 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');