0

只是为了好玩,我尝试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;
}

我该如何解决这个问题?

4

2 回答 2

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;
}
于 2013-06-23T18:03:13.973 回答
0
  1. 节目开始
  2. 没有钥匙
  3. 第二个 while 不执行
  4. 它在第一个循环中旋转

你按下一个键:

  1. 第一个 kbhit 返回 true
  2. 它进入第二个循环
  3. 还有一把钥匙在场
  4. 第二个 kbhit 返回 true
  5. 程序退出

您需要在进入第二个循环之前删除第一个按键,并且您应该提示自己按一个键开始程序。或者你可以直接跳到第二个循环。

于 2013-06-23T17:04:36.877 回答