首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-19 
!!!一个关于TC下菜单选择的函数问题#include stdio.h #include stdlib.h #include conio.h #include

!!!一个关于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--;


热点排行