标题:关于C语言中bioskey()函数的疑惑(TC环境)
只看楼主
不忘
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-18
结帖率:80%
已结贴  问题点数:10 回复次数:1 
关于C语言中bioskey()函数的疑惑(TC环境)
#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;

   /* function 1 returns 0 until a key is pressed */
   while (bioskey(1) == 0);

   /* function 0 returns the key that is waiting */
   key = bioskey(0);

   /* use function 2 to determine if shift keys were used */
   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;
}
我把这个程序在TC3.0Z中运行的时候,就一直在 while (bioskey(1) == 0);处循环,根本就不会向下面的语句中进行;
求各路大神指导呀!

搜索更多相关主题的帖子: void determine function waiting 
2012-07-18 18:46
westfall999
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:40
专家分:101
注 册:2012-7-22
得分:10 
int bioskey(int cmd);

当cmd = 1时:bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
因为当程序运行到while (bioskey(1) == 0);时,如果你一直没有按下任意键盘键,则它将返回一个0值,条件判断变成while(0==0),条件当然一直是真喽,所以一直循环下去,其实它一直在等你按键。。。
2012-07-22 21:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373659-1-1.html




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

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