[英]getchar() in switch()-function doesn't work
所以我试图自己编写我的第一个项目,并且已经在 getchar() 函数方面遇到了一些麻烦。
我想要做的是获得用户输入而无需按回车键。 用户输入应该“激活”与输入等效的案例(例如输入=案例= 1)。 取而代之的是,我仍然必须按 Enter 键,但随后只会调用默认命令。
我看到,有一些关于它的问题,但没有一个真的帮助了我。 这是我的代码:
#include <stdio.h>
#include "open_txt.h"
int main (){
printf("\n\n\tAdressbook\n\n");
printf("Main menu: \n\n");
printf("1. Add contact\n");
printf("2. Edit contact\n");
printf("3. Search contact\n");
int ui;
ui = getchar();
switch(ui){
case 1:
printf("\n\nADD CONTACT\n\n");
break;
case 2:
printf("\n\nEDIT CONTACT\n\n");
break;
case 3:
printf("\n\nSEARCH CONTACT\n\n");
break;
default:
printf("That's not an option!\n");
}
return 0;
}
getchar
function 将按下的键作为字符代码返回。 因此,如果有人按1
则返回的是字符'1'
,而不是值1
。
在switch
中使用字符常量而不是数字常量:
case '1':
printf("\n\nADD CONTACT\n\n");
break;
case '2':
printf("\n\nEDIT CONTACT\n\n");
break;
case '3':
printf("\n\nSEARCH CONTACT\n\n");
break;
我想要做的是获得用户输入而无需按回车键。
然后你应该使用getch()
function。 getch()
从键盘读取单个字符。 但它不使用任何缓冲区,因此输入的字符立即返回,无需等待回车键。
在这里,switch语句返回一个字符而不是一个值,所以你应该这样写:'1''2''3'
#include <stdio.h>
#include "open_txt.h"
int main (){
printf("\n\n\tAdressbook\n\n");
printf("Main menu: \n\n");
printf("1. Add contact\n");
printf("2. Edit contact\n");
printf("3. Search contact\n");
int ui;
ui = getchar();
switch(ui)
{
case '1':
printf("\n\nADD CONTACT\n\n");
break;
case '2':
printf("\n\nEDIT CONTACT\n\n");
break;
case '3':
printf("\n\nSEARCH CONTACT\n\n");
break;
default:
printf("That's not an option!\n");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.