kbhit () с двойной петлей не работает хорошо

Просто для удовольствия я попробовал распечатать kbhit() с помощью циклов, чтобы программа после нажатия клавиши kbhit() линию бесконечно до тех пор, пока не будет нажата клавиатура. Он хорошо компилируется и при запуске просто дает пустой экран. Нет отпечатков. Но при одном нажатии заканчивается программа. Однако консоль не закрывается.

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

Как я могу это решить?

 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; } в 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; } в 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. Программа начинается
  2. Нет ключей.
  3. Второй пока не выполняется
  4. Он вращается вокруг в первом цикле

Вы нажимаете клавишу:

  1. первый kbhit возвращает true
  2. Он входит во второй цикл
  3. есть еще ключевой момент
  4. второй kbhit возвращает true
  5. выход программы

Прежде чем вводить второй цикл, вам нужно удалить первое нажатие клавиши, и вы должны попросить вас нажать клавишу, чтобы начать программу. Или вы могли бы просто прыгнуть во второй цикл.