getchar()
getchar() はキーボードから1文字読み込む関数。ただし、1文字だけ入力したのでは読み込んでくれなくて、ラインバッファに保存されている状態になっている。Enterキーが押された時点ではじめて1文字読み込む。この時、ラインバッファには文字が残っていて、他の入力要求、例えば scanf などで読み込むことができる。
なんか面倒だけど、歴史的経緯があるそうな。
#include
int main(void)
{
    char ch;
    ch = getchar();
    printf("Typed character: %c.\n", ch);
    return 0;
}
実行結果。書く入力の最後に Enter キーを押している。
takatoh@nightschool $ ./sample_3_1a x Typed character: x. takatoh@nightschool $ ./sample_3_1a xyz Typed character: x.
getche()
ラインバッファを利用しない、1文字入力の関数もある。本には「ANCI C で規定された関数でないものの、ほとんどのコンパイラはそれを getche() という名前で呼んでいます。」と書かれている。また、getche() を使うには conio.h ヘッダファイルが必要だとも。
というわけで、次のようなプログラムを書いた。
#include
#include
int main(void)
{
    char ch;
    printf("Input a character: ");
    ch = getche();
    printf("\nASCII code is %d.\n", ch);
    return 0;
}
ところが、これをコンパイルするとエラーになる。
takatoh@nightschool $ gcc sample_3_1b.c -o sample_3_1b
sample_3_1b.c:2:19: fatal error: conio.h: そのようなファイルやディレクトリはありません
 #include <conio.h>
                   ^
compilation terminated.
どうやら gcc は「ほとんどのコンパイラ」に含まれないらしい。ググってみてもやはり gcc には getche() も conio.h もないようだ。
ま、ないものはないので仕方がない。次に進むことにしよう。