kbhit()双循环不能正常工作

时间:2013-06-23 16:52:49

标签: c loops goto stdio conio

只是为了好玩,我尝试用循环打印kbhit(),以便按下按键后的程序 无限打印线直到再次按下键盘。它编译得很好,在运行时,只是给出了空白屏幕。没有打印。但是,单个按键结束程序。虽然控制台没有关闭。

#include <stdio.h>
#include <conio.h>

int main()
{
  while(1)
  {
    if(kbhit())
    {
      while(1)
      {
        if(kbhit())
        {
          goto out;
        }
        printf("Print Ed Infinitum Until Key Press");
      }
    }
  }
  out:
  return 0;
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

int main(void){
    while(1){
        if(kbhit()){
            getch();
            while(1){
                if(kbhit()){
                    getch();
                    goto out;
                }
                printf("Print Ed Infinitum Until Key Press\n");
            }
        }
    }
out:
    return 0;
}

答案 1 :(得分:0)

  1. 程序开始
  2. 没有钥匙
  3. 第二次不执行
  4. 它在第一个循环中旋转
  5. 你按一个键:

    1. 第一个kbhit返回true
    2. 进入第二个循环
    3. 还有一个关键的礼物
    4. 第二个kbhit返回true
    5. 程序退出
    6. 您需要在进入第二个循环之前删除第一个按键,然后您应该提示自己按一个键开始该程序。或者你可以跳进第二个循环。