C/C++におけるgetch()関数の使用

この記事では、C/C++でgetch()関数を使用する方法について見ていきます。

キーボードから文字の入力を読み取りたい場合、getch()関数は非常に便利です。

これはCの標準ではないが、それでもPOSIX C関数です。したがって、Windows / Linux / Macからこの関数を利用することができます。

この機能を使い方をいくつかの例を交えて見てみましょう。


C/C++におけるgetch()の基本的な構文

この関数は標準入力(stdin)から単一の文字を受け取り、整数を返します。

これは、 ヘッダーファイルの一部として存在していますので、プログラムに含める必要があります。

#include <conio.h>
int getch();

この関数はパラメータを受け取りません。

ここでは、getch() は標準入力から読み込まれた文字の ASCII 値を返します。

例えば、文字「0」を入力として与えた場合、それはASCIIコードの「0」の値、つまり49を返します。

今、C / C++では文字を直接整数に変換することができます。従って、型キャストするとASCII値49は文字値の’0’にキャストされます!

今、いくつかの例を見てみましょう。


C/C++でgetch()を使用する方法について – いくつかの例

単純な例として、まず一文字を読むことを考えてみましょう。

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

int main() {
    char ch = getch();
    printf("Received Input: %c\n", ch);
    return 0;
}

サンプルの出力例

Received Input: a

キーボードに‘a’を入力した後、私はこの出力を得ました。では、キーボードから5文字待つプログラムを見てみましょう。

キーボードからの入力は、getch()では表示されないことに注意してください。したがって、入力をタイプする際には、カーソルに入力が表示されません。

5文字の文字列が全て入力されてから、完全な文字列を表示しましょう。

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

int main() {
    // Set op = {0, 0, 0, 0, 0, 0} = '\0\0\0\0\0\0' string
    char op[6] = {0};
    for (int i=0; i<5; i++) {
        op[i] = getch();
    }
    printf("Received 5 character Input: %s\n", op);
    return 0;
}

出力する

Received 5 character Input: Hello

確かに、「こんにちは」と入力したときは、正しく出力がされました。

出力文字列には6つの文字があることに注意してください。なぜなら「\0」のために1バイトを確保する必要があるからです。したがって、opは「Hello\0」となります。


結論

この記事では、C / C++でgetch()関数を使用してキーボードから文字入力を受け取る方法について学びました。

CとC++のさらなる内容については、当社のCプログラミングチュートリアルセクションをご覧ください!

参考文献 (さんこうぶんけん)

  • Linux Manual Page on getch() function in C

コメントを残す 0

Your email address will not be published. Required fields are marked *