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);
}