【C言語】getc()・getchar()・getch()・getche()関数の違いを徹底解説
C言語には、キーボードやファイルから1文字を読み取るための入力関数が複数用意されています。getc()、getchar()、getch()、getche()はいずれも入力から1文字を取得する関数ですが、読み取り元やバッファの扱い、画面への表示(エコー)の有無など、動作に重要な違いがあります。また、これらの関数はすべて読み取った文字を整数型(int)として返します。
以下に、それぞれの関数の特徴と違いを詳しく解説します。
getc()
getc()は、任意のストリーム(ファイルポインタや標準入力stdinなど)から1文字を読み取れる汎用的な関数です。読み取りに失敗した場合やストリームの終端に達した場合はEOFを返します。
構文
int getc(FILE *stream);
getchar()
getchar()は、標準入力(stdin)からのみ文字を読み取る関数です。内部的にはgetc(stdin)と同等の動作をします。入力はバッファリングされるため、Enterキーが押されるまで読み取りは完了しません。
構文
int getchar();
getch()
getch()は、標準入力から1文字を読み取りますが、バッファを使用しません。そのため、Enterキーが押されるのを待たずに、キーが押された瞬間に即座に処理を返します。また、入力された文字は画面に表示されません(ノンエコー)。パスワード入力などの用途に適しています。なお、この関数は<conio.h>で定義されており、主にWindows環境で利用できる非標準関数です。
構文
int getch();
getche()
getche()はgetch()とほぼ同じ動作をします。標準入力からバッファを使わずに文字を読み取り、Enterキーを待たずに即座に返ります。唯一の違いは、入力された文字を画面にエコー表示する点です。こちらも<conio.h>が必要な非標準関数です。
構文
int getche();
4つの関数の比較一覧
| 関数 | 読み取り元 | バッファ | エコー表示 | ヘッダーファイル |
|---|---|---|---|---|
| getc() | 任意のストリーム | あり | あり | <stdio.h> |
| getchar() | 標準入力のみ | あり | あり | <stdio.h> |
| getch() | 標準入力 | なし | なし | <conio.h> |
| getche() | 標準入力 | なし | あり | <conio.h> |
サンプルコード
#include <stdio.h>
#include <conio.h>
int main() {
printf("%c", getc(stdin));
printf("%c", getchar());
printf("%c", getch());
printf("%c", getche());
return 0;
}
実行結果
A
B
C
D
EE
このプログラムでは、getc()・getchar()・getch()で入力した文字がそれぞれ1回ずつ出力されます。最後のgetche()では、入力文字が画面にエコー表示され、さらにprintf()によっても出力されるため、同じ文字が2つ続けて表示されます。一方、getch()はエコー表示を行わないため、printf()による出力のみが1回だけ表示されます。
なお、getc()とgetchar()はISO C規格で定義された標準関数のため移植性が高い一方、getch()とgetche()は環境依存の非標準関数であり、主にWindows(DOS系)環境でのみ使用できます。クロスプラットフォームな開発では注意が必要です。
-
【C言語】getc()・getchar()・getch()・getche()関数の違いを徹底解説
C言語には、キーボードやファイルから1文字を読み取るための入力関数が複数用意されています。getc()、getchar()、getch()、getche()はいずれも入力から1文字を取得する関数ですが、読み取り元やバッファの扱い、画面への表示(エコー)の有無など、動作に重要な違いがあります。また、これらの関数はすべて読み取った文字を整数型(int)として返します。以下に、それぞれの関数の特徴と違いを詳しく解説します。getc()getc()は、任意のストリーム(ファイルポインタや標準入力stdinなど)から1文字を読み取れる汎用的な関数です。読み取りに失敗した場合やストリームの終端に達した場合
-
Pythonのraw_input()とinput()の違いとは?わかりやすく解説
Python 2では、ユーザーからのキーボード入力を受け取るために「raw_input()」と「input()」という2つの組み込み関数が用意されていました。名前は似ていますが、この2つには動作面で重要な違いがあります。 raw_input()関数の基本的な使い方 raw_input()は、引数として渡した文字列をプロンプト(入力を促すメッセージ)として画面に表示し、ユーザーが入力した内容を取得します。そして、入力されたデータは必ず文字列(str型)として返されるのが特徴です。 name = raw_input(What is your name? ) print Hello, %s. %