プログラムを実行したときに、キーボードから文字を入力したり、ディスプレーに出力したりといった入出力処理を行いたい場合もあることでしょう。
C言語には、キーボードから文字を入力したり、ディスプレーに文字を出力したりするための標準関数がありますので、
簡単にあなたのプログラムに入出力処理を実装できます。
今回のC言語超入門では、キーボードから1文字を入力する getchar 関数と 、ディスプレーに1文字を出力するputchar 関数の使い方について解説していきます。

1文字を入力するgetchar関数の使い方

getchar関数は、キーボードから1文字を入力するための標準関数で、以下のように使用します。

    int moji;
    moji = getchar();

getchar関数には引数がなく、戻り値として入力した文字コード(ASCIIコード)を返します。
ASCIIコードとは、アルファベットや数字、記号などを収録した文字コードのことで、
例えば、’A’ のASCIIコードには 0x41、’B’には 0x42 というコードが割り振られています。
以下のプログラム1を実行しますと、ASCIIコードの一覧を出力しますから、参考にしてみてください。

/* プログラム1 */
include<stdio.h>
int main() {
  int i;
  printf("文字 ASCIIコードn");
  for(i=32;i<=126;i++) printf( "%c     0x%xn", i, i);
}

getcharを使ったサンプルプログラム

サンプルプログラムを使って、getchar関数の使い方を見ていきましょう。
以下のプログラム2は、キーボードから入力した文字を出力するサンプルプログラムです。
 

/* プログラム2 */
include<stdio.h>
int main() {
  int moji;
  moji = getchar();
  printf("'%c'が入力されましたn", moji);
}
※プログラム2の実行結果(キーボードから'a'を入力した場合)
'a'が入力されました

getchar関数の注意点

getchar関数を使用するにあたっては、戻り値をint型変数で受け取ることに注意してください。
文字コードを受け取るからといってchar型変数を使用してしまいますと、意図しないプログラムの動作につながる可能性があります。
なぜなら、getchar関数は入力が終了したときに -1 を返すのですが、
一部の開発環境においては、char型の変数でマイナスの数値を扱うことができないためです。
ですから、getchar関数の戻り値には、確実にマイナスの数値を扱うことができるint型を使用するのです。

1文字を出力するputchar関数の使い方

getchar関数がキーボードから1文字を入力するのに対し、putchar関数は1文字をディスプレーに出力します。
putchar関数の引数には、以下のようにASCIIコードを指定します。

    getchar(0x41);

また以下のように指定することもできます。

    getchar('A');

putchar関数とprintf関数の違い

ディスプレーに文字を出力する標準関数には、putchar関数の他にprintf関数があります。
例えば、’A’という文字をディスプレーに出力するのでしたら、
putchar関数を使っても、printf関数を使っても、出力結果は同じになります。

    putchar(‘A’);
    printf(“A”);

putchar関数は1文字しか出力できないのに対して、printf関数は文字列の出力や、出力するデータの書式を指定することができますから、
1文字しか出力することができないputchar関数の必要性を感じないかもしれません。
ですが、putchar関数と比較するとprintf関数は高機能なために、処理速度が遅いというデメリットがあります。
そのため、複雑な文字出力を必要とせず、処理速度を求めるプログラムを作成するときは、putchar関数に分配が上がります。
プログラムの用途に応じて、putchar関数とprintf関数を使い分けると良いでしょう。

連続して文字入力を行うには

getchar関数は1文字しか入力できませんが、while文と組み合わせ連続で文字入力を行うことで、
文字列を入力することができるようになります。
以下のプログラム3は、returnキーが入力するまで文字入力を続けるサンプルプログラムです。

/* プログラム3 */
include<stdio.h>
int main() {
  int moji;
  while((moji=getchar()) != 'n') putchar(moji);
}
※プログラム3の実行結果(キーボードから'Windows'と入力して最後にreturnキーを入力した場合)
Windows

C言語超入門の第26回まとめ

今回のC言語超入門では、文字を1文字だけ入出力する標準関数のgetchar関数とputchar関数の使い方について、お伝えいたしました。
最後に、改めてgetchar関数とputchar関数のポイントをまとめておきます。
・getchar関数は、キーボードから1文字を入力するための標準関数で、入力した文字のASCIIコードを戻り値として返す
・getchar関数の戻り値を格納する変数はchar型ではなく、int型変数を使用する
・1文字を出力するのであればprintf関数よりもputchar関数の方が高速に動作する
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。