clearerr() — エラー標識のリセット

形式

#include <stdio.h>
void clearerr (FILE *stream);

言語レベル

ANSI

スレッド・セーフ

はい

説明

clearerr() 関数は、指定された streamのエラー標識およびファイルの終わり標識をリセットします。 いったん設定すると、プログラムが clearerr() 関数または rewind() 関数を呼び出すまで、指定されたストリームの標識は設定されたままになります。 fseek() 関数は、ファイルの終わり標識もクリアします。 ILE C/C++ ランタイム環境は、エラー標識やファイル終了標識を自動的にクリアしません。

戻り値

戻り値はありません。

errno の値は、次のいずれかに設定されます。
意味
EBADF
ファイル・ポインター、または記述子が有効ではありません。
ENOTOPEN
ファイルはオープンされていません。
ESTDIN
stdin をオープンできません。
EIOERROR
回復不能入出力エラーが起こりました。
EIORECERR
回復可能入出力エラーが起こりました。

次の例はデータ・ストリームを読み取り、次に読み取りエラーが発生していないことを確認します。
#include <stdio.h>
#include <stdlib.h>
 
FILE *stream;
int c;
 
int main(void)
{
   if ((stream = fopen("mylib/myfile", "r")) != NULL)
   {
      if ((c=getc(stream)) == EOF)
      {
         if (ferror(stream))
         {
            perror("Read error");
            clearerr(stream);
         }
      }
   }
   else
      exit(0);
}

関連情報