2

重複の可能性:
C/C++: Enter キーが押されるのを待たずに標準入力から文字をキャプチャ
する

一定のループにある C 言語でプログラムを作成しようとしていますが、各サイクルの開始時にキーボードから入力を受け取るか、キーが押されていない場合は続行できる必要があります。

getchar() と _getch() はどちらも入力を待つので不十分です。_getch に似ているが、入力を待たない関数を誰かが知っていれば、それは大歓迎です。

4

1 に答える 1

5

やりたいことを行うための C 標準の方法 (ユーザーが Enter キーを押さずにキーボードからキーストロークをキャプチャする) はありません。プラットフォーム固有のものにする必要があります。<conio.h>これを取得するには、Windows で必要なものが必要ですcurses。Linux でも必要です。(cursesMacでも動作すると思いますが、それについては引用しないでください)

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());
于 2013-01-09T04:20:23.407 に答える