printf、scanfは高機能な入出力関数でしたが、1文字の入出力を行いたい時に
使うには、「実行プログラムが大きくなる」「実行速度が遅くなる」などの短所も
ありました。そこで、ここでは1文字に限った入出力関数を紹介します。
ただし、1文字の入出力はその用途によっていくつか種類がありますが、
ここでは次の物を紹介します。
int getch() 1文字入力(エコーなし)
int getche() 1文字入力(エコーあり)
int putch(int c) 1文字出力
|
例を示します。
#include <conio.h>
#include <stdio.h>
void main(){
int ch;
ch = getch(); // 1文字入力
printf("\n"); // 改行
putch(ch); // 1文字出力
}
|
a
a
|
黄色の部分「a」を入力しますが、画面には「a」は表示されません。改行を挟んだ
次の「putch」で初めて表示されます。「getch()」を「getche()」にすると、入力した
文字も表示され、計2つの「a」が表示されることになります。
ここで注意して欲しいことがあります。「getch()」の戻り値、「putch()」の引数
は「char」型ではなく「int」型ということです。「char」型にすると、コンパイラにも
よりますが、警告(warning)が出る場合があります。
ここで紹介しなかった1文字の入力関数は「CTRL+C」を受け付けると中止した旨の
「-1」を返す関数があります。この場合「char」型だと、「-1」が受け取ることができなく
なるために、「int」型にしています。それらの関数と互換を保つために、ここで紹介した
関数も「int」型なのです。