读书人

关于C语言测试按键有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

关于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;
}

读书人网 >C语言

热点推荐