一定のループにある C 言語でプログラムを作成しようとしていますが、各サイクルの開始時にキーボードから入力を受け取るか、キーが押されていない場合は続行できる必要があります。
getchar() と _getch() はどちらも入力を待つので不十分です。_getch に似ているが、入力を待たない関数を誰かが知っていれば、それは大歓迎です。
やりたいことを行うための C 標準の方法 (ユーザーが Enter キーを押さずにキーボードからキーストロークをキャプチャする) はありません。プラットフォーム固有のものにする必要があります。<conio.h>
これを取得するには、Windows で必要なものが必要ですcurses
。Linux でも必要です。(curses
Macでも動作すると思いますが、それについては引用しないでください)
Windowskbhit()
では、入力を待機せず、テストを実行した瞬間にキーが押された場合に戻ります。キーが何であったかを知る必要がある場合は、これを次のように組み合わせることができますgetch()
何かのようなもの:
while(countdown++ <= 1000){ // give a second to hit something
if(b=kbhit()) // if the user presses a key
break; // leave the loop early
Sleep(1); // else, sleep for 1 ms and try again
}
if (b != 0) // if something was pressed
printf("The key was %d\n", getch());