putchar関数とgetchar関数

 前回はscanf関数をご紹介し、入力にscanf関数、出力にprintf関数を使う旨を解説しました。scanf関数とprintf関数は、整数型でも小数型でも文字型でも利用できます。ただ、"%d"のような指定が必要となり、やや面倒です。もし、扱うデータ型が文字型であるなら、入力はgetchar関数、出力はputchar関数というものを使うことが出来ます。

 以下のプログラムを書いて実行してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int input;
    
    printf("文字を入力して下さい。\n");
    
    input = getchar();
    
    putchar(input);
    
    return 0;
}

 実行すると、以下のような内容が出力され、処理が一時ストップします。

文字を入力して下さい。

 ここで半角のaを入力し、エンターを押します。すると、

文字を入力して下さい。
a
a

 このように表示されます。printf関数やscanf関数と違い、ポインタや"%d"といったものを使う必要がなく、表記がシンプルだという利点があります。

 Tips:getchar関数とputchar関数に指定する引数は、なぜか整数型(int型)の変数でなくてはなりません。charだからとchar型の変数を指定した場合、正常に動作しない可能性があります。注意して下さい。

 さて、上記のプログラムは非常に簡単なgetchar関数とputchar関数の使い方のご紹介でした。もう少し応用的な使い方をご紹介します。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    int input;
    
    printf("文字を入力して下さい。\n");
    
    do {
        input = getchar();
        putchar(input);
    } while (input != EOF);
    
    printf("プログラム終了。\n");
    
    return 0;
}

 この応用例は、whileのループ(この例ではdo-whileループですが)の中でキーボード入力を求め、入力が終了したらループを抜けるというものです。「while (input != EOF)」とありますが、この「EOF」が送られたときにループを抜けるのです。入力の際にEOFを送る方法は、Windowsの場合「Ctrl + z」、Macの場合は「Control + d」です。

 Tips:このように、EOFになるまでループが続くという書き方は、標準入出力よりも今後の記事で扱う「ファイル入出力」でよく使われます。

■スポンサーリンク

このページの先頭へ