サイトマップ / C言語講座出入り口総目次目次:入出力(2)>getchar( )とputchar( )

青い直線

getchar( )とputchar( )

青い直線

[gotoとlabel]←このソース[キーボードから1行入力]

/* getchar( ) と putchar( ) */

/* 今回は標準ライブラリ関数 getchar( )とputchar( )について少し詳しく説明します。getchar( ) は、'stdio.h'をインクルードして使います。

    #include <stdio.h>
    int getchar(void);

    例:c = getchar(  );

    実行結果          戻り値
    成功	      入力した1文字
    失敗	      EOF

getchar( )は標準入力(キーボード)から1文字入力して、上の例では c に代入します。getchar( )は関数ではなく、マクロとして定義されています。

    #define getchar(  ) getc(stdin)

上記コードの意味は「もし、ソースプログラム中に'getchar( )'があれば、プリプロセッサは'getc(stdin)'に書き換えろ」ということです。getc( )はファイルから1文字入力する関数で、失敗すると、'EOF' という値を返します。stdin はキーボードのことです。つまり、キーボードから1文字入力して、c に代入します。

これに良く似た標準ライブラリ関数に、putchar( )があります。

    #include <stdio.h>
    int putchar(int c);

    例:putchar(c);

    実行結果          戻り値
    成功	      出力した文字
    失敗	      EOF

putchar( )は、stdio.h をインクルードして使います。putchar( )も関数ではなく、マクロとして定義されています。

	#define putchar(c) putc(c, stdout)

stdout とは、標準出力(コンピュータの画面、コンソールの一部)のことです。putchar( )は、 文字 c を標準出力に出力します。

putchar( )とgetchar( )の引数や戻り値は int型の整数です。文字の入出力ならば、char型を使うのが自然に見えます。入力または出力に失敗すると、' EOF 'を戻り値として返します。' EOF ' は int型の整数で、End Of Fileを略したものです。このため、int型を使います。

ソースプログラムの説明

ソースプログラムの前半に、二つの forループがあります。最初のループでは、c の初期値は 'A' で、c が 'Z' になるまで、画面に c の値を出力します。アルファーベットが画面に表示されます。次のループではアルファーベットが逆順に表示されます。

ソースプログラムの最後の部分で、キーボードからの入力を画面に出力しています。このままでは、無限ループになってしまうので、入力された文字が 'e' ならループから抜けるようにしました。

putchar( )は高水準入出力関数です。バッファリングします。バッファリングというのは、バッファがいっぱいになるまで画面に出力しないでためておくということです。 */

/* ここからソースプログラム */

#include <stdio.h>

void main(void);	

void main(void)
{
    int c;

    for (c = 'A'; c <= 'Z'; c++)        /* c の値は 'A' から 'Z' まで変化 */
        putchar(c);                     /* 1文字画面に出力 */
	
    printf("\n");

    for (c = 'Z'; c >= 'A'; c--)        /* c の値は 'Z' から 'A' まで変化 */
        putchar(c);                     /* 1文字画面に出力 */

    printf("\n\n");

    printf("アルファベットを入力して下さい\n");	
    printf("eを入力するとループからぬけます\t");	

    while ((c = getchar(  )) != EOF) {        /* 文字の入力 */
        putchar(c);
        if (c == 'e')            /* 入力された文字が 'e' なら */
            break;               /* ループから抜ける */
    }
}

/* ここまでソースプログラム */

/*

	while ((c = getchar(  )) != EOF) {

上記の書き方はC 特有な表現法で、キーボードからの入力を c に代入し、その結果を評価して、'EOF'でない間ループを続けるということです。 */

[gotoとlabel]←このソース[キーボードから1行入力]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線 C言語講座出入り口総目次目次:入出力(2)>getchar( )とputchar( )

[サイトマップ]