当前位置: 代码迷 >> C语言 >> [求助]请大家帮我看看
  详细解决方案

[求助]请大家帮我看看

热度:273   发布时间:2005-01-09 13:21:00.0
[求助]请大家帮我看看

/****************************************************************/ /*bioskey函数 */ /*函数原型: int bioskey(int cmd); */ /*函数功能: */ /* 利用函数bioskey可以实现三种功能,参数cmd为要实现的功能号,*/ /*值只能为0、1、2,具体含义如下: */ /* 0:在系统中有一个按键队列,所有的键盘按键都在这里排成队。该*/ /*功能就是如果按键队列中有按键,那么读取队列首位的按键,并返回按*/ /*键值;否则等待键盘按键出现。( 其中按键值的高字节为扫描码,低字*/ /*节为ASCII码) */ /* 1:如果按键队列中没有按键,那么返回零,否则返回非零。 */ /* 2:返回特殊按键Shift、Ctrl、Alt等键的按键状态。 */ /****************************************************************/ /*bioskey例程*/ #include <stdio.h> #include <bios.h> #include <ctype.h>

#define RIGHT 0x01 #define LEFT 0x02 #define CTRL 0x04 #define ALT 0x08

int main(void) { int key, modifiers;

/* 1号功能返回零,除非按下了一个键*/ while (bioskey(1) == 0);

/* 0号功能返回等待中按下的键*/ key = bioskey(0);

/* 2号功能用于判断特殊键是否被按下*/ modifiers = bioskey(2); if (modifiers) { printf("["); if (modifiers & RIGHT) printf("RIGHT"); if (modifiers & LEFT) printf("LEFT"); if (modifiers & CTRL) printf("CTRL"); if (modifiers & ALT) printf("ALT"); printf("]"); } /* print out the character read */ /* 打印出读进来的字符 */ if (isalnum(key & 0xFF)) printf("'%c'\n", key); else printf("%#02x\n", key); return 0; } 这是一个源程序,里面有一些不懂的地方,希望各位指教指教,感激不已! “if (isalnum(key & 0xFF))”中的isalnum()的参数有什么作用? “printf("%#02x\n", key);”这句里面的"%#02x“是什么意思? 盼望中.............


----------------解决方案--------------------------------------------------------
哇,对不起我是新来的,我只看懂了一句!!
----------------解决方案--------------------------------------------------------
int isalnum(int ch);
当内部参数为字母或数字时返回非零值,否则,返回零!!

而“#”是磅符号,他会在八进制或十六进制前加上合理的前缀!!!
----------------解决方案--------------------------------------------------------
谢谢版主了,我还有一个小小的疑问,就是这里的参数(key &amp; 0xFF)到底怎么来理解它?

[此贴子已经被作者于2005-1-10 16:31:50编辑过]



----------------解决方案--------------------------------------------------------
  相关解决方案