サイトマップ / C言語講座出入り口総目次目次:ファイル>読み込みモードで開く||デモ用

青い直線

読み込みモードで開く

青い直線

[ファイル操作の基本]←このソース→[fgets( ) とputs( )]

/* 今日は、Cソースファイルの各行に行番号を付けて画面に出力します */

/* ソースプログラムの説明 */

/* ソースプログラムの中で、getc( )とputchar( )が使われています。

    #include <stdio.h>
    int getc(FILE *fp);

    例:getc(fp);

        戻り値
        成功した場合        ファイル内の次の文字
        失敗した場合        EOF

getc( )は成功した場合には、ファイルから読み込んだ文字の整数値を返します。何故、char型ではないのでしょうか。これによく似た関数に、getchar( )があります。こちらもキーボードから読み込んだ文字の整数値を返します。

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

    例:getchar( );

    戻り値
    成功した場合        標準入力(キーボード)内の次の文字
    失敗した場合        EOF

また、標準出力に1文字出力する関数putchar(c)についても、下記に示すように文字の整数値が返ってきます。

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

    例:putchar(c);

    戻り値
    成功した場合        文字 c の整数値
    失敗した場合        EOF

実は、これらの関数が失敗した時に返ってくるEOFは、 整数だからです。文字の入出力の場合、char型のデータであるはずの文字を、int型の整数として扱ってもエラーになることはありません。

ソースプログラムでは、ファイルを読み込み専用のモードで開きます。ファイルから文字を読み込む前に、最初の行番号とコロンを標準出力に出力しておきます。

1字ずつ読み込み、標準出力に出力し、改行コードが来たら、それを標準出力に出力し(改行します) 、次いで行番号とコロンを出力します。これをEOFが来るまで続けます。

"LTest.html""LTest.c"に変更し、同じホルダーに置いてからコンパイルしたものを実行してください。 */

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

#include  <stdio.h>
#include  <stdlib.h>    /* exit(  )で必要 */

void main(void);

void main(void)
{
    FILE *fp;
    int c;            /* 文字を読み込む */
    int n = 1;        /* 行番号用カウンタ */

      /* ファイルを開けなかったら */ 	
    if ((fp = fopen("LTest.c", "r")) == NULL) {
        fprintf(stderr, "ファイルを開けません!\n");
        exit(2);                /* メッセージを表示して終了 */
    }

    printf("/*%d:*/", n++);	/* 1行目の行番号とコロンを表示 */

      /* ファイルから EOFが現れるまで1字読み込む */
    while ((c = getc(fp)) != EOF) {
        if (c == '\n') {                   /* 改行コードなら */
            putchar(c);                    /* 改行して */
            printf("/*%d:*/", n++);        /* 行番号を表示し */
        }                                  /* 行番号をインクリメント */
        else                               /* 改行コード以外なら */
            putchar(c);                    /* その文字を表示 */
    }
    fclose (fp);                           /* ファイルを閉じる */
}

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

/* 今回は画面に出力しましたが、ファイルに出力すれば、ソースプログラムに行番号を書き込むユーテリティーになります。 */

[ファイル操作の基本]←このソース→[fgets( ) とputs( )]

青い直線

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

青い直線

サイトマップ / C言語講座出入り口総目次目次:ファイル>読み込みモードで開く||デモ用