ferror()

ferror()は、ストリームのエラーをテストします。


  #include <stdio.h>
  int ferror(FILE *stream);
  

streamはテストするストリームで、一般的にはfopen()が返した値を指定します。 たとえば、fgets()やfgetc()でテキストを読み込むときにエラーがあるかどうか調べることができます。

streamで示されたエラー指示子は、関数clearerr()を使ってリセットすることができます。

次の例は、入力ストリームstreamと出力ストリームostreamのエラーを調べて、 エラーがあればストリームからの読み書きのループを終了するプログラムの例です。


  #include <stdio.h>
  #ifdef _MSC_VER
  #pragma warning(disable : 4996)
  #endif
    
  int main(int argc, char* argv[])
  {
    FILE *stream, *ostream;
    int c;
    stream = fopen("./test.txt", "r");
    if (stream == NULL) {
      fprintf(stdout, "入力ファイルを開くことができません.\n");
      return;
    }
    ostream = fopen("./dest.txt", "w");
    if (ostream == NULL) {
      fprintf(stdout, "出力ファイルを開くことができません.\n");
      return;
    }
    while (!feof(stream))
    {
      if (ferror(stream))
        break;
      c = fgetc(stream);
      fputc(c, ostream);
      if (ferror(ostream))
        break;
    }
    fclose(stream);
    fclose(ostream);
  
    return 0;
  }
  

関連項目

fopen()

fgets()

fgetc()



C言語目次 inserted by FC2 system