Namespaces
Variants

std:: fclose

From cppreference.net
< cpp ‎ | io ‎ | c
헤더 파일에 정의됨 <cstdio>
int fclose ( std:: FILE * stream ) ;

주어진 파일 스트림을 닫고 stream 버퍼의 모든 기록되지 않은 데이터를 관련 출력 장치에 기록합니다. 읽히지 않은 버퍼링된 데이터는 모두 폐기됩니다.

작업의 성공 여부와 관계없이, 스트림은 더 이상 파일과 연결되지 않으며, std::setbuf 또는 std::setvbuf 에 의해 할당된 버퍼(있는 경우)도 연결이 해제되고, 자동 할당이 사용된 경우 할당이 해제됩니다.

출력 장치에 데이터가 기록된 경우, std::fclose 에서 반환되는 것은 관찰 가능한 체크포인트 를 설정합니다.

(since C++26)

포인터 stream 의 값이 std::fclose 가 반환된 후에 사용되면 동작은 정의되지 않습니다.

목차

매개변수

stream - 닫을 파일 스트림

반환값

0 성공 시, EOF 그 외의 경우.

예제

#include <cstdio>
#include <cstdlib>
int main()
{
    int is_ok = EXIT_FAILURE;
    FILE* fp = std::fopen("/tmp/test.txt", "w+");
    if (!fp)
    {
        std::perror("File opening failed");
        return is_ok;
    }
    int c; // 참고: char가 아닌 int, EOF 처리를 위해 필요함
    while ((c = std::fgetc(fp)) != EOF) // 표준 C I/O 파일 읽기 루프
        std::putchar(c);
    if (std::ferror(fp))
        std::puts("I/O error when reading");
    else if (std::feof(fp))
    {
        std::puts("End of file reached successfully");
        is_ok = EXIT_SUCCESS;
    }
    std::fclose(fp);
    return is_ok;
}

출력:

End of file reached successfully

참고 항목

파일을 연다
(함수)
기존 스트림을 다른 이름으로 연다
(함수)
출력 영역 버퍼를 비우고 연결된 파일을 닫는다
( std::basic_filebuf<CharT,Traits> 의 public member function)