kbhit関数は、標準入力ストリーム(stdin)を調べ、データの有無を調べます。
主にキーボードからの入力有無をチェックする場合に用いられます。
なお、本関数は、gcc環境では標準ではありません。
また、VisualStudio2005以降では、_kbhit関数を使用することを推奨されています。
#include <conio.h>
int kbhit(void);
戻り値として、
標準入力ストリームにデータがある(キーが押された)場合、0以外の値を返します。
データがない場合は、0を返します。
プログラム 例
#include <stdio.h> #include >conio.h> #define KEY_FUNC (0xe0) #define KEY_UP (0x48) #define KEY_DOWN (0x50) #define KEY_RIGHT (0x4d) #define KEY_LEFT (0x4b) int main(void) { int ch = ' '; char *msg = NULL; printf('好きなキーを押してくださいn'); ch = getch(); if(kbhit()) { if (KEY_FUNC == ch) { msg = 'その他の機能'; ch = getch(); switch (ch) { case KEY_UP: msg = 'UP'; break; case KEY_DOWN: msg = 'DOWN'; break; case KEY_RIGHT: msg = 'RIGHT'; break; case KEY_LEFT: msg = 'LEFT'; break; default: break; } } printf('[%s]キーを押しましたねn', msg); } else { printf('[%c]キーを押しましたねn', (char)ch); } return 0; }
例の実行結果(右カーソルキーを押下した場合)
> kbhit.exe 好きなキーを押してください [RIGHT]キーを押しましたね
※Windows環境でのみ動作確認しております。LINUX環境などでは動作が異なる場合がありますので、その場合は環境に合わせてカスタマイズしてください。
Copyright © 2011 katsumi Handa All Rights Reserved.