| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2713 人关注过本帖
标题:新手,求上下左右的asc怎么前面都有0阿~
只看楼主 加入收藏
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
LZ````我刚才找到我以前的专门用来调试使用getch()获得的键值的数字值及其字符形式的程序,我刚才又把它重新修改了一下.现在把它送给你,你以后要用getch获取键值的时候可能用得住,用它你可以发现很多东西.

#include <stdio.h>
#include <conio.h>  /*  getch所在头文件  */

#define NL putchar('\n')
#define MID -32
#define F1_F10 0
#define CTRL_Z 26

/*  将getcH获得的值用整数和字符的形式输出用空格分开  */
#define CHAR_INT_C(c) printf ("%c", c ) , putchar(' ') , printf ("%d", c ) , NL

/*  程序为了读取所以键值,所以单独按任何键都不回退出,但是如果连续按2次CTRL+Z(EOF)那么程序回才退出  */
#define EXIT(c) ( c == CTRL_Z ) ? ( ( ( c=getch() ) == CTRL_Z ) ? (1):(0) ) : (0)

int main(void)
{
    char c ;
   
    while ( 1 )   
    {
          c = getch();  /*  开始读取  */
         
          CHAR_INT_C(c) ; /*  输出2种值*/
         
          /*  MID  为中键盘 F1_10 为F1-F10的键``因为它们都是一个键有2个键值 */
          if ( c == MID  || c == F1_F10 )  
          {
               c=getch() ;  /* 读取第二个键值 */
               CHAR_INT_C(c) ; /* 输出第二个键值 */
          }
         
          NL ;
         
          if ( EXIT(c) ) break ; /* 退出请连续按2次CTRL+Z  */
         
    }
   
    return 0 ;
}


这个是EXE:
val_c.rar (4.61 KB)

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-03-17 13:39
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
当然``有些个别键是没有办法读取的``我调试了下``以下键``我的程序``无法读取:

数字锁定键: Num LOCK(小键盘7上面的那个键)
3个组合键: ALT    SHIFT    CTRL
中键盘最上面的3个键: PrScrnSysRq  SdrollLock  PauseBreak
大小写锁定键: CapsLock
WINDOWS开始键和右CTRL旁边的那个键

这几个读取不了``其他都没问题``当然有些键和组合键一起能读取某些值但是有些键和组合键
一起却什么都读不了

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-03-17 13:48
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
用不同的编译器是不同的。
vc和tc都是getch碰到特别值返回0,再用一次getch()可以得到键盘码;
但是devcpp有时返回-32,比如在方向键盘区上下左右先返回-32,但在小键盘区,把梳子输入关闭了,返回的同样是0。
据说原理是先返回低八位在返回高八位。
tc中有检测键盘状态的函数,可以看到一些特别建是否被按下

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-17 18:41
fish1725
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-3-17
收藏
得分:0 
刚到家,非常感谢各位~但是我又做了个程序~只用到了while,就能解决这个问题了,各位高手能看看到底是怎么回事?
新建文件夹.rar (7.16 KB)
2008-03-17 19:00
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
貌似是tc编译出来的。。。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-17 19:02
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
回复 10# 的帖子
他的意思是要按一个健不用等回车就有反应,或是可以接受特殊建,getchar()达不到要求

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-17 19:04
fish1725
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-3-17
收藏
得分:0 
俄。。。是tc的~那么是怎么回事呢
2008-03-17 19:20
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
没什么。。。看见dos虚拟机了,感叹一下

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-17 19:31
fish1725
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-3-17
收藏
得分:0 
实话说我只会tc。。。vc一直没想去用。。。各位大侠~这怎么回事阿 ?
2008-03-17 19:34
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
/*做出来就发出来,真是欺我朝无人那!*/  /*玩笑*/
#include "stdio.h"

main()
{
  int key;
  while(1)
  {key=getch();

    printf("\r\b%d",key);}
      
}
2008-03-17 19:37
快速回复:新手,求上下左右的asc怎么前面都有0阿~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052745 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved