getChar ってキーボードから文字を何回入力しようとも、
最後に改行を入力しない限り関数から処理が抜けないと思うんだけど、
そうすると最初の一文字だけ取得して残りはバッファに残ってしまう。

なので次に getChar するとユーザーのキー入力を待たずに、
バッファに残っている先頭の文字を直ちに取得してしまう。

最後の改行も含めた複数のキー入力のうちで
最初の文字を取得するだけなら getLine と head でいいんだけど、
ユーザーに改行を入力させずに、一文字のキーを入力したら
直ちに関数から抜けてその文字を取得できるような関数は
標準ライブラリには無いですか?