clearerr

エラー状態のクリアを行う

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

【説明】
ファイルfpのエラー指示子と終端指示子をクリアします。
例えば、"w"(書き込み)モードでfopenしたファイルに読み込み動作を行うと、ファイルエラーが発生し、ファイルのエラー指示子が設定されます。また、ファイル終了までアクセスを行うと終端指示子が設定されます。clearerr関数はこのエラー指示子や終端指示子をクリアします。
エラー指示子が設定されているか否かはferror関数で検知し、終端指示子が設定されているか否かはfeof関数で検知します。

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

【戻り値】
なし

【使用例1】
/* 書き込みモードでオープンしたファイルを読み込む場合 */
#include <stdio.h>
#include <stdlib.h>

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

        /* 書き込みモードでファイルをオープン */
        if((fp = fopen(argv[1], "w")) == NULL ) {
                fprintf(stderr,"ファイルオープンエラー\n");
                exit(EXIT_FAILURE);
        }

        /* ファイル読み込み */
        c = fgetc(fp);
        putchar(c);

        if(ferror(fp)!=0)
        {
                /* エラー発生 */
                printf("ファイルエラーが発生しました\n");

                /* エラー指示子, 終端指示子をクリア */
                clearerr(fp);
        }

        if(ferror(fp)==0)
        {
                printf("ファイルエラーの解除を確認\n");
        }

        fclose(fp);
        return 0;
}
【実行結果】
ファイルエラーが発生しました
ファイルエラーの解除を確認
【使用例2】
/* ファイルENDまでアクセスした場合 */
#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);
        }

        if(feof(fp)!=0)
        {
                printf("ファイル終了\n");

                /* 終端指示子をクリア */
                clearerr(fp);
        }

        if(feof(fp)==0)
        {
                printf("終端指示子のクリアを確認\n");

        }

        fclose(fp);

        return 0;
}
【実行結果】
ファイル終了
終端指示子のクリアを確認

戻る


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