fclose() — 스트림 닫기

형식

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

언어 레벨

ANSI

스레드세이프

설명

fclose() 함수는 stream이 가리키는 스트림을 닫습니다. 이 함수는 닫기 전에 스트림과 연관된 버퍼를 모두 삭제합니다. 스트림을 닫을 때 이 함수는 시스템이 예약한 버퍼를 해제합니다. 2진 스트림이 닫히면 파일의 마지막 레코드가 레코드의 끝까지 널(null) 문자(\0)로 채워집니다.

리턴값

fclose() 함수는 스트림을 성공적으로 닫으면 0을, 또는 오류가 감지된 경우 EOF를 리턴합니다.

errno 값을 다음으로 설정할 수 있습니다.
의미
ENOTOPEN
파일이 열려 있지 않습니다.
EIOERROR
회복 불가능한 I/O 오류가 발생했습니다.
EIORECERR
회복 가능한 I/O 오류가 발생했습니다.
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");
}