读书人

!一个关于TC下菜单选择的函数有关问题

发布时间: 2012-03-19 22:03:05 作者: rapoo

!!!一个关于TC下菜单选择的函数问题·········
#include "stdio.h "
#include "stdlib.h "
#include "conio.h "
#include "string.h "
#include "math.h "
void main()
{
int choice=1,hotkeychoice=1,ascii,scan,c=35,r=10,count=5,i;
char *s,*hotkeys= "MBRHE ";
char *mainmenu[]={
"Member ",
"Book ",
"reports ",
"Help ",
"Exit "
};
for(i=0;i <5;i++) /*输出列表*/
{
gotoxy(c,r+i); textcolor(RED); cprintf(mainmenu[i]);
}
while(1)
{
gotoxy(c,r+choice-1); textcolor(WHITE+BLINK); cprintf(mainmenu[choice-1]);/*显示选择状态*/
/*while(!kbhit());*/
ascii=getch();/*接收按键信息*/
if(ascii==0)
scan=getch();
gotoxy(c,r+choice-1); textcolor(RED); cprintf(mainmenu[choice-1]);/*恢复红色字体*/


if(ascii==0)
{
if(scan==80)
choice++;

if(scan==72)
choice--;


if(choice==0)
choice=count;

if(choice> count)
choice=1;

}

else
{
if(ascii==13)
{};


s=hotkeys;
hotkeychoice=1;

while(*s)
{
if(ascii==*s)
{};


hotkeychoice++;
s++;
}
}
}
}
这是我在一个程序里面剪切出来的以个函数,它的功能是在TUBOR C里面实现以个菜单选择功能。小弟的迷惑是ascii=getch();/*接收按键信息*/
if(ascii==0)
scan=getch();
这里是怎么接收按键的值的,但按什么键的时候ASCII 值为0?
if(ascii==0)
{
if(scan==80)
choice++;

if(scan==72)
choice--;


if(choice==0)
choice=count;


if(choice> count)
choice=1;

}
方向键控制菜单选择的原理是根据scan的值来判断,但是scan接收的方向键的int值为什么会是下为80,上为72?
谢谢!!



[解决办法]
键盘上是不能实现 '\0 '的输入的!你可以跟踪一下你的代码!也可以用printf测试,譬如:
if(ascii==0)
scan=getch();
gotoxy(c,r+choice-1); textcolor(RED); cprintf(mainmenu[choice-1]);

if(ascii==0)
{
printf( "ascii=%d\n ",ascii);//加上这么一句,(应该不会运行到它的)
if(scan==80)
choice++;

if(scan==72)
choice--;


读书人网 >C语言

热点推荐