ferror( )とfeof( )


ferror関数は、読み込み中のファイルが空(もう読み込むデータが無い)になったかを調べる関数です。
feof関数は、読み書き中にエラー(書き込めない、読み込めない等)が発生したことを調べる関数です。
例えば、バイナリモードでファイルを読み込んでいる場合は、関数の戻り値では、データなのか、エラーなのか、終了(EOF:End Of File)なのか不明なことがあります。このような場合は、ferror関数、feof関数を用いて判定します。


ferror関数 「ファイルの読み書きでエラーが発生したかどうか調べる。」

(仕様)
  
#include <stdio.h>
    FILE *fp;
    int ferror (fp)

(機能)
   
fpの指すファイルの読み書きでエラーが発生していないかどうか調べる。
(戻り値)
   
正常な場合0、エラーの場合0以外の値を返す。

feof関数−「ファイルからの読み書きが終了したかどうか調べる。」

(仕様)
   
#include<stdio.h>
    FILE *fp;
    int feof (fp)

(機能)
   
fpが指すファイルのデータが終わりになったかどうかを調べる。
(戻り値)
   
ファイルにデータがまだあれば0を、データが無ければ(ファイルの終わりならば)0以外の値を返す。


次のプログラムでは、読み込みがエラー、もしくは終了したらそれを利用者に知らせて読み込みを終わります。

FILE *fp;
char buffer[256];
if (fgets(buffer,256,fp)==NULL) {

    if (ferror(fp)) {
        puts("読み込みエラー
")
        return(-1);
    }

    if (feof(fp)) {
        puts("読み込み終了
")
        return(-1);
    }

}

/* 正常に入力 */
・・・・・・・・・・・・・・・・・


「基礎講座もくじへ」

「Q&Aもくじへ」