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