2012-03-16 14 views
0

関数を組み合わせた関数が必要ですkbhit()getch()です。
つまり、プログラムが動作するときに、私が'q'キーを押すと、プログラムはgetch()関数と同じように文字を受け取るために一時停止せずに停止します。
kbhit()利点とgetch()利点を組み合わせたいと思います。関数kbhit()とgetch()を組み合わせた関数はありますか?

私の目的を理解していただければ幸いです。

答えて

0

kbhitには、待機中の文字があるかどうかが示されます。 getchは次の文字を返します。必要な場合は1を返します。私が考えることができる2つの唯一の自然な組み合わせは、文字があれば返すものですが、文字がない場合は待たないでしょう。

/* Returns a character from stdin, if there is one. 
* Otherwise, returns -1. */ 
int getch_nonblocking(void) 
{ 
    return kbhit() ? getch() : -1; 
} 
+0

すみません。私はあなたが呪いを使っていると思った。どうやら、あなたはconioを使用しています。私の改訂版の回答をご覧ください。 –

+0

_kbhit()と_getch()/ _ getche()フォームconio.hです。上のアルゴリズムは特別な(機能)キーを考慮していません。 –

+0

上記の例は問題なく動作しますが、問題はありません。 –

0

kbhitgetchのあなたの言及に基づいて、おそらくWindowsを使用しています。その場合は、GetKeyboardStateを試してみてください。

+0

おかげで、しかし、あなたは私の単純な例をしてください伝えることができます:それはあなたがすでにkbhitgetchを持って与えられ、行うのは簡単です。 –

+0

あなたとMSDNライブラリの間にルータがありますか? – Kaz

+0

基本的には、状態を取得する前に256バイトの配列を与えてから、それを再度使用してすべてのキー状態が元の配列から変更されているかどうかを確認します。 – chris