fclose() — ストリームのクローズ

形式

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

言語レベル

ANSI

スレッド・セーフ

はい

説明

fclose() 関数は、 streamが指すストリームをクローズします。 この関数は、ストリームをクローズする前に、そのストリームと関連付けられたすべてのバッファーを削除します。 ストリームをクローズする場合、この関数はシステムが予約したすべてのバッファーを開放します。 バイナリー・ストリームがクローズされる場合は、ファイル内の最後のレコードがそのレコードの終わりまでヌル文字 (\0) で埋められます。

戻り値

fclose() 関数は、ストリームを正常にクローズした場合は 0 を戻し、エラーが検出された場合は EOF を戻します。

errno の値は、次のいずれかに設定されます。
意味
ENOTOPEN
ファイルはオープンされていません。
EIOERROR
回復不能入出力エラーが起こりました。
EIORECERR
回復可能入出力エラーが起こりました。
ESCANFAILURE
ファイルは走査失敗のマークを付けられました。
注: FILE ポインターが指すストレージは、 fclose() 関数によって解放されます。 fclose() 関数を使用した後は、 FILE ポインターを使用しようとしても無効です。

次の例は、ファイル myfile をオープンしてストリームとして読み込み、その後にこのファイルをクローズします。
#include <stdio.h>
 
#define NUM_ALPHA  26
 
int main(void)
{
  FILE *stream;
  char buffer[NUM_ALPHA];
 
  if (( stream = fopen("mylib/myfile", "r"))!= NULL )
  {
    fread( buffer, sizeof( char ), NUM_ALPHA, stream );
    printf( "buffer = %s\n", buffer );
  }
 
  if (fclose(stream))   /* Close the stream. */
      perror("fclose error");
  else printf("File mylib/myfile closed successfully.\n");
}

関連情報