easy software

C언어 파일입출력 fopen과 fclose를 알아보자 본문

C언어/FILE IO

C언어 파일입출력 fopen과 fclose를 알아보자

JAVA 웹개발자 2015. 2. 12. 14:59

fopen함수란?

 

#include <stdio.h>

 

FILE* fopen(const char * filename, const char * mode)

 

fopen함수는 위와같이 정의되어 있습니다.

 

함수가 정상적으로 작동 시 해당 파일의 파일포인터를 리턴하고,

 

실패 시 NULL 포인터를 리턴합니다.

 

fopen함수는 파일과의 연결을 위해 스트림을 생성해주는 함수입니다.

 

흔히들 파일을 개방해주는 함수라고도 합니다.

 

첫번째 인자로는, 파일의 경로를 포함한 이름을 전달하고

 

두번째 인자로는 파일 개방 모드를 전달합니다.

 

파일 개방 모드에 대한 설명은 제 블로그 다음 글에서 확인하시면 됩니다.

 

 

 

fclose함수란?

 

#include <stdio.h>

 

int fclose(FILE * stream)

 

fclose함수는 위와같이 정의되어 있습니다.

 

오류없이 종료가 이루어지면 0을 리턴합니다.

 

fclose함수는 파일과의 열결되어있던 스트림을 제거해주는 함수입니다.

 

보통은 파일을 닫는 함수라고들 이야기 합니다.

 

인자로는 파일의 정보를 지니는 FILE구조체 변수의 포인터를 전달하면 됩니다.

 

예를 들어,

 

FILE * fp = fopen("Test.txt", "wt");

 

를 실행하여 파일을 개방하고, 리턴값을 FILE포인터 변수 fp에 저장했습니다.

 

fp는 Test.txt를 가리키는 FILE구조체 변수를 참조하게 됩니다.

 

이 fp를

 

fclose(fp);

 

처럼 인자로 전달하게 되면, fp가 참조하고 있는 파일이 닫히게 됩니다.

 

그런데 프로그램이 종료되면 파일은 자동적으로 닫힙니다.

 

자동으로 닫히는데 뭐하러 fclose함수를 호출해줄까요?

 

여러분들이 워드(엑셀, 파워포인트 등)를 작업중인데, 갑자기 정전이 되었습니다.

 

그러면 데이터가 저장이 되어있을까요?

 

장담할 수 없습니다. 이러한 불상사를 막기위해서 fclose를 반드시 호출하는 습관을 기릅시다.

Comments