[C언어] 파일 열고 닫기 - fopen, fclose

C/파일, 디렉토리 함수2013. 11. 24. 21:20



※요약

fopen : 파일에 대한 입력 및 출력을 합니다.

fclose : fopen함수로 개방한 파일을 닫습니다.


※함수 원형 및 설명

FILE *fopen( const char *filename, const char *mode );
//filename : 개방할 파일의 경로 및 파일명
//mode : 파일 접근 권한(읽기 전용, 쓰기 전용 등 아래 표 참고)
//반환값 : 개방된 파일의 FILE 구조체 포인터, 실패시 NULL포인터

int fclose( FILE *stream );
//stream : 개방된 FILE 구조체의 포인터
//반환값 : 성공 시 0, 실패 시 -1(EOF)



※모드 설명

 모드

 설명

읽기만 가능하며 파일이 존재해야 한다.

존재하지 않을 경우 에러가 리턴된다.

 w

쓰기만 가능하며 파일을 생성한다.

파일이 존재하면 그 파일을 지우고 생성한다.

 a

파일 끝에 추가만 가능하며 

파일이 존재하지 않으면 파일을 새로 생성한다. 

 r+

읽기, 쓰기 모두 가능하며 파일이 존재해야 한다. 

존재하지 않을 경우 에러가 리턴된다.

 w+

 읽기, 쓰기 모두 가능하며 파일을 생성한다.

파일이 존재하면 그 파일을 지우고 생성한다.

 a+

파일을 읽어서 파일 끝에 추가만 가능하다.

파일이 존재하지 않으면 파일을 새로 생성한다. 

 t

 파일을 text 모드로 개방한다. 

입력 시, CF/LF를 “\n”으로 자동 변환하고 

출력 시에는 “\n”을 CF/LF로 자동 변환한다.

t나 b 생략시 텍스트 모드로 개방된다.

 b

 파일을 이진(binary) 모드로 개방한다.

개행 문자 “\n”을 변환없이 그대로 읽고 쓴다.

파일 개방 시 기본 모드는 텍스트 모드인 t모드입니다.

고로 r은 rt와 같고 r+는 r+t와 같습니다.



※모드 조합

 모드

읽기

쓰기

추가

 텍스트 모드

r / rt

w / wt

a / at

 텍스트 갱신 모드

r+ / r+t

w+ / w+t

a+ / a+t

 이진 모드

rb

wb

ab

 이진 갱신 모드

r+b

w+b

a+b



※모드표

모드

읽기

쓰기

갱신

파일 없을 시

파일 생성

파일 존재 시

삭제 여부

fseek함수

사용 여부

r

O

X

X

X

X

O

r+

O

O

O

X

X

O

w

X

O

O

O

O

O

w+

O

O

O

O

O

O

a

X

O(*)

X

O

X

X(*)

a+

O

O(*)

X

O

X

O

모드 a, a+는 현재의 FILE 포인터 위치에 관계없이 항상 파일 끝에 씁니다.

그러므로 fseek함수로 FILE 포인터 위치를 바꿔도 소용이 없으며, a+모드일 때 읽을 위치만을 설정합니다.

기존 파일을 삭제하지 않고 수정하려면 r+모드로 하면 됩니다.



※예제

#include <stdio.h>

int main( )
{
	FILE *pFile = NULL;

	pFile = fopen( "d:\\text.txt", "w+t" );
	if( pFile != NULL )
	{
		fputs( "테스트 입니다.", pFile );
		fclose( pFile );
	}
	else
	{
		//에러 처리
	}

	return 0;
}


작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역

  • 프로필 사진
    ㅍㅇㅀ345ㅅ
    2018.07.24 17:52

    CF/LF -> CR/LF 수정하시면 좋을 듯 하네요~