ウェブサイト検索

C/C++でgetch()関数を使用する


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

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

これはC標準の一部ではありませんが、依然としてPOSIX C関数です。したがって、Windows/Linux/Macからこの関数を使用することができます。

いくつかの例を使って、この関数の使い方を見てみましょう。

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

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

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

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

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

ここで、getch()はstdinから読み取った文字のASCII値を返します。

例えば、キャラクター「0」を入力すると、それは「0」のASCII値である49を返します。

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

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

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プログラミングのチュートリアルセクションをご覧ください!

参考文献

  • C言語のgetch()関数に関するLinuxマニュアルページ

関連記事: