feof

ファイルの終了状態の検知を行う

【書式】
#include <stdio.h>
int feof(FILE *fp);

【説明】
ファイルfpの終端指示子をチェックします。
ファイルへのアクセスでは、ファイルの終わりに達したかどうかを、終端指示子(記憶場所は処理系に依存)で管理していますが、このfeof関数はこの終端指示子のON/OFFを検査します。
終端指示子はclearerr関数rewind関数fseek関数でクリアされます。

【引数】
FILE *fp : FILEポインタ

【戻り値】
終端指示子が設定されている場合  : ≠0
終端指示子が設定されていない場合 : =0

【使用例】
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        FILE *fp;
        int c;

        if((fp = fopen(argv[1], "r")) == NULL ) {
                fprintf(stderr,"ファイルオープンエラー\n");
                exit(EXIT_FAILURE);
        }

        /* ファイル終了まで読み込み 下記注意参照のこと */
        while (feof(fp)==0) {
                c = getc(fp);
                putchar(c);
        }

        fclose(fp);

        return 0;
}
【実行結果】
指定ファイルの内容を全て標準出力します。
(注意) この使用例は、あくまでもファイル終了までファイルを読み、ファイル終了の検知を行うことが目的です。この例のようにすると、ファイル終端に達してもgetcでファイルを読み込もうとするので、読み込みに失敗し、cにはEOFが返ります。それを。putcharで表示するのはうまくありません。ですから、getcでファイル全体を読む場合には、次のようにしてください。
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
        FILE *fp;
        int c;

        if((fp = fopen(argv[1], "r")) == NULL ) {
                fprintf(stderr,"ファイルオープンエラー\n");
                exit(EXIT_FAILURE);
        }

        /* ファイル終了まで読み込み */
        while ((c = getc(fp)) != EOF) {
                putchar(c);
        }

        fclose(fp);

        return 0;
}

戻る


banner
初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved