当前位置: 代码迷 >> 综合 >> getchar() 读取回车问题
  详细解决方案

getchar() 读取回车问题

热度:49   发布时间:2024-01-06 05:18:36.0

问题描述:制作一个菜单,使用getchar()函数。
如果只用一个getchar(),输入的回车会影响到下一个getchar();
如果用连续两个getchar()函数,以便第二个可以把回车读取掉,会遇到问题:在多输入一个回车的情况下会出现识别不到输入的字符的情况。例如下面代码会一直打印主菜单无法跳转到下一个选项。

#include <stdio.h>
int main(void)
{
    char c = 0;while(1){
    printf("choise please\n");printf("1:menu1\n");printf("2:menu2\n");c = getchar();getchar();switch(c){
    case '1':menu1();break;case '2':menu2();break;default:break;	}}return 0;
}

解决方法:使用 while((c = getchar()) == ‘\r’); 用循环清除前面的回车,且由于子菜单也用这个方法,键盘输入后的回车不会对子菜单造成影响。

#include <stdio.h>
int main(void)
{
    char c = 0;while(1){
    printf("choise please\n");printf("1:menu1\n");printf("2:menu2\n");while((c = getchar()) == '\r');   //用循环清除所有的回车,直到读取到键盘输入的cswitch(c){
    case '1':menu1();break;case '2':menu2();break;default:break;	}}return 0;
}
  相关解决方案