getch与特殊键

这个函数的功能是得到键盘按键对应的ASCII码值。  
  采用两层getch()的用意是,某些扩展码对应的按键,低字节为0,高字节才是该键的扩展码。  
   
  如果把程序改为      
  void   get_key(char   *ch,char   *ext)  
  {  
      *ch=getch();             //得到键盘按键的ASCII码值  
    if(!*ch)                     //如果是特殊的按键则对应的低字节值为0  
            *ext=getch();   //继续采集高字节码值  
    else                             //标准按键  
                                            *ext=0;  
  }  
   
  main()  
  {  
  char   ch,   ext;  
  get_key(&ch,   &ext);  
  printf("/n--------0X%x   ---------/n",   ch);     //输出ASCII码值,16进制  
  printf("/n--------0X%x---------/n",   ext);     //输出ASCII码值,16进制  
  getch();  
  }  
   
  看的会更清楚一些。  
   
  运行结果:  
        a         ch   -   0X61           ext   -   0X0  
      ->         ch   -   0X0             ext   -   0X4d  
   
  下面是常用扩展码以及其按键:  
   
  按键                             扩展码  
   
  Shift+Tab                   0x0f  
  home                             0x47  
  向上键                         0x48  
  PgUp                             0x49  
  <-                                 0x4b  
  ->                                 0x4d  
  End                               0x4f  
  向下键                         0x50  
  PgDn                             0x51  
  Insert                         0x52  
  Delete                         0x53  
   
  F1   -   F10                     0X3b   -   0X44  
  Shift+F1   -   F10         0X54   -   0X5d  
  Ctrl   +F1   -   F10         0x5e   -   0x67  
  Alt     +F1   -   F10         0x68   -   0x71  

 

以上是我在网上找到的。于是在自己机上跑了一下发现情况好象不一样,准确的说是更复杂一点。

以下是我的输入和输出

1:    run  

2:           输入k        输出   --ox66---

                                 --ox0---

3:           向上键                                程序退出

4:    run                       --ox48---

                                 --ox0---        

5:           ->                                    退出

6:    run                       --ox4d---

                                 --ox0----

7:          j                                     退出

8:          〈-                 --ox0----

                                 --ox46---

9:           向下键                               退出

10: run                         --ox50---

                                 --ox0----

11:          k                                    退出

12: run

13:          k                   --ox66---

                                  --ox0---

 

 

上面的结果是我运行了好几次一致得出的结果。我从其中发现两个问题:

1:当退出前输入字母时,下次运行时不会有响应结果输出,且不受其影响。但是向上,下键却有。

2:为什么程序中ch的值,在输入向上,向下等键的不同时期,其值是不同的 。这两个时期就是运行中输入和

退出程序前输入是不同的 。

以上问题只是提出来而已。因为没有getch()的源代码,所以我也不知道怎么解释。

 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值