C言語入門講座。関数、サンプル集を参考にして、 C言語をマスターしよう。初心者から上級者まで。

標準入力ストリーム(stdin)のデータ有無を調べる

2012.08.10

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.

関連記事