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マニュアルページ
