第1章 「やさしい入門」
1.5 文字入出力
1.5.1 ファイルの複写

2020年11月7日

この項では文字の入出力について学習します。
文字の入出力には色々な方法がありますがここではgechar()とputchar()を利用します。

getchar()やputchar()は関数と呼ばれる処理のかたまりです。
以前から良く出てくるprintf()も関数になります。

書き方は似ていますがwhile()やfor()は制御文と呼ばれるもので関数とは異なります。

プログラムの目的

キー入力を画面に表示する。

 

ソースコード

解説

①int c = getchar();
getchar()関数でキーボードからのキーを受け取ります。
この関数はキー入力が入るまで待ち続けます。
キー入力が入ると押されたキーのコードを変数cに代入しています。
このように値を返す関数もあります。
関数の詳細は後ほど別の項で説明します。
ここではgetchar()関数は押されたキーを返す関数と覚えて下さい。

②while (c != EOF) {
変数cの値がEOF以外は、whileループ内の処理を行います。
逆に言えばEOFになるとループから抜けて終了します。
EOFはstdio.hに定義されていてEnd of File(ファイル終端)を意味します。

ここではキーボーでCtrl + Zと入力することでEOF入力ができます。

※getchar()について
getchar()は確かに1文字を読み取る関数であるがEnterキーを押すまでは抜けません。
Enterキーを押した後、まとめてデータがやってきます。
ステップ送りデバッグで動作を見てみると判りやすいと思います。

 

③putchar(c);
キー入力した値を画面に表示します

④c = getchar();
キー入力の受け取りですね。
先頭①でcは宣言済みですのでintは不要です。
キー入力されるとwhileに戻りcの値がチェックされます。

変形版

K&Rの本では次のような変形版のサンプルも用意されています。
こちらはwhile文の中にgetchar()関数を記述しています。
こちらはソースコードのみの紹介にとどめます。

 

今回はここまで

 

※本プログラム教室はK&Rの「プログラミング言語C」をベースに進めています。