关于C语言测试按键问题
我想做这么一个按键程序:
首先提示你要选择的选项,这时候
1.如果直接按esc键,退出程序。
2.如果输入 m 或 menu,则进入menu函数。
我的方法:
1.先定义一个字符数组。
2.先用getch()得到一个按键,看看是不是ESC键,如果是的话,直接退出; 如果不是ESC键的话,把得到的字符放到定义完的字符数组的第一个位置。
3.再用scanf( "%s ", charArray + 1),从字符数组的第二个位置开始读数据。
但这样会有一个问题,当我按 m 后再按回车的话,没有立即进入 menu 函数,而是还在等待我输入的状态,但我输入 menu 后回车没有问题,请问这种情况应该如何处理?
[解决办法]
m回车
menu回车
这样带着回车判断不就行了
进入以后再置上一个标志,里面就可以判断回车键了
[解决办法]
我想因为你要判断menu,所以m就要等待,还不如就用1个表示.其他命令有重复才用多个的,那不是好些.要不然就象你说的那样.
[解决办法]
还是给你一个稍微完整一点的吧
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ESC 27
#define ENTER 13
int main(int argc, char *argv[])
{
while(true)
{
if (kbhit())
{
int ch=getch();
if (ch==ESC) exit(1);
else ungetch(ch);
int n=0;
char charArray[100];
while ((ch=getch())!=ENTER)
{
charArray[n++]=ch;
}
charArray[n]=0;
puts(charArray);
}
}
system( "PAUSE ");
return EXIT_SUCCESS;
}
[解决办法]
合到一起实现就是这样:
#include <bios.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
int key;
char input[10];
key=bioskey(0);
if (key==0x11b) /*按了ESC键*/
{
puts ( "程序将立即退出 ");
return 0;
}
else
{
puts ( "按Esc 键才能退出程序 ");
}
/* 当输入m 或 menu 时 程序进入 minu() 函数 */
puts ( "\n请输入你的选择: ");
scanf ( "%s ", input);
if (!strcmp (input, "m ") || !strcmp (input, "menu "))
{
//menu();
puts ( "menu函数还在设计中 ")
}
else
{
puts ( "\n你的输入不符合要求 ");
}
return 0;
}