isalnum函数

eatfox 2003-12-02 03:00:37
这是一个检测键盘功能函数,前面用BIOSKEY获得键盘输入,并赋给KEY:
int key,modifiers;
while(bioskey(2)==0);
key=bioskey(0);

后面判断并读出来:
if(isalnum(key&0xFF)
printf("'%c'",key);
else printf("%#02x\n",key);

既然isalnum 本身就是检测输入是否普通建为什么还要加个&0xFF呢?
请问各位后面那个PRINTF中的是什么意思啊?
...全文
293 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
winco 2003-12-02
  • 打赏
  • 举报
回复
楼上OK。因为字符是小于等于255(FF)
liloaka 2003-12-02
  • 打赏
  • 举报
回复
这是因为bioskey(0)返回一个整型数,低八位是输入字符的ASCII 码,如果低八位为0,则高八位为扩展键盘码。
key&0xFF为TRUE,则说明key低八位是输入字符的ASCII 码;
FALSE,则说明key高八位为扩展键盘码。
DaNiao 2003-12-02
  • 打赏
  • 举报
回复
isalnum的参数应该是一个ascii码,返回是否是字母数字,而不是你说的什么“普通键”
我觉得空格和windows键是最普通的键了

你那个key里得到的是所谓扫描码,有两个字节,低字节是ascii码,高字节表示你是否同时按下了ctrl alt shift之类的键

key&0xFF就是切出key的低字节部分(ascii码部分)

"%#02x" 表示输出小写的16进制数,保证2位,不足用0补
arfi 2003-12-02
  • 打赏
  • 举报
回复
"%#02x"
按16进制格式输出,加上#会在前面显示0x字样,2为输出的宽度,0表示宽度不足时前面补0
hanyixin 2003-12-02
  • 打赏
  • 举报
回复

加个0xFF可以得到一个把key的高位清为0的值。



70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧