トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> コードサンプル >> kbhit()関数について

kbhit, _kbhit関数について (C言語)

WindowsでのC言語開発の際に使用される、kbhit関数について説明します。
(※ このkbhit関数はLinuxのCコンパイラには存在しません。
    LinuxのCコンパイラでkbhit関数を使用したい場合は、Linuxでのkbhit関数を参照して下さい。)

kbhit関数とは、何かキーが押された場合0以外の値を返し、
何もキーが押されていない場合は0を返す関数です。

そして、関数が0以外の値を返した場合、バッファ内に入力されたキーが残ったままになっている為、
kbhit()の後には getch()でキー情報を取り出すのが定石となっています。

VC++でのヘッダーは、conio.hです。
また、VC++2005以降、kbhit関数は _kbhit関数に変更(?)されました。


・・・というわけで、VC++2010での_kbhit関数の使用例は以下の通り。

#include <stdio.h>
#include <conio.h>

#define ESC 27

int main(void)
{
    int cnt = 0;

    while (1) {

        if (_kbhit() && _getch() == ESC) {
            _cputs("\r\nYou Hit Esc-Key!!\r\n");
            break;
        }

        printf("%d\r", ++cnt);
    }

    return 0;
}
実行結果) _kbhit関数の使用例 実行するとカウンターが凄い勢いで回転し、ESCキーを押すとプログラムが終了します。 (カウンターの出力方法は、コチラを参照して下さい。) (何故27をESCと定義するのか分からない人は、コチラを参照して下さい。) VC++2010っぽく、 kbhit() のかわりに _kbhit()を、 getch() のかわりに _getch() を、 puts() のかわりに _cputs() を 使用してみました^^;) この例だけだと「な~んだ、詰まらない」という気がしますが、 例えばC言語でテトリス・ぷよぷよ・インベーダーゲーム等を開発する際は、このkbhit関数は非常に重宝しますよ~。
ひょっとしたら参考になるかもしれないページ : Linuxでのkbhit関数, コンソールウィンドウでアニメーションを表示, getchについて
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。