티스토리 뷰


C언어 함수 fopen()의 모든 것!


우리는 지금까지 여러 가지 편집기(메모장, MS 워드, 한글, 훈민정음 등)으로 파일을 만들 수 있었습니다. 물론 다른 프로그램으로도 파일을 만들 수가 있죠.

이제는 C언어를 이용해서 파일을 만들어 보겠습니다. C언어에서 파일을 만들기 위해서는 함수 fopen()을 사용합니다.  

함수 fopen()은 헤더 파일 stdio.h파일에 저장되어 있습니다. (
fopen()을 사용하기 위해서는 stdio.h파일을 소스코드 내에 포함시켜야 한다는 것 잊지 마세요. 잊으면 오류나니까요)




 fopen() 에 대해서  


헤더파일 stdio.h에 저장되어 있는 함수 fopen()의 원형은 아래와 같습니다.




자세한 설명을 하도록 하겠습니다. 
함수 fopen()은 두 개의 문자열 전달인자를 입력받아 처리하는 함수입니다. 
이 함수 fopen의 반환값은 FILE*입니다. 

반환값의 형식 FILE은 C언어에서 파일을 표현하는 형식이며 구조체로 되어 있죠. 
FILE *는 구조체 FILE의 포인터 형입니다.


참고로, Dev-C++에서 stdio.h파일을 열어 FILE 구조체를 보면 다음과 같습니다.




 파일 처리 종류  함수 fopen()의 파일 처리 종류를 정리했습니다


 모    드 의    미 
 r 읽기(read) 모드, 파일이 없을 경우 에러가 발생한다
 w 쓰기(write) 모드,
파일이 없으면 새로 만들고, 기존의 파일이 있으면 내용을 지우고 처음부터 기록한다
 a 파일의 맨 뒷 부분에 추가로 기록한다. 
파일이 없으면 새로 만든다.
 r+ 읽기(read)와 쓰기(write) 모드,
파일이 없을 경우 에러가 발생한다. 
 w+ 읽기(read)와, 쓰기(write) 모드,
파일이 없으면 새로 만들고, 기존의 파일이 있으면 그 이전의 내용을 지우고 처음부터 기록한다. 
 a+ 파일의 맨 뒷 부분에 추가로 기록한다.
파일이 없으면 새로 만들고, 기존의 파일이 있으면 파일의 맨 뒷 부분에 추가로 기록한다.
파일의 어느 곳이나 읽기는 가능하나 쓰기는 파일 끝에 추가적으로 가능하다


위의 mode 스트링은 다음과 같이 조합할 수 있습니다:

rt : 이미 존재하는 텍스트 파일을 읽기 전용으로 열기
rb : 이미 존재하는 이진 파일을 읽기 전용으로 열기




 함수 fopen() 예제  

아래의 예제는 함수 fopen()을 이용해서 test.txt파일을 읽기 모드로 열고 성공하면 "File Open Success" 메세지를, 실패하면 "File Open Error"라 출력하는 예제입니다.


#include<stdio.h>

int main()
{
 	FILE *f ;
 	
 	if ( ( f = fopen("test.txt", "w") ) == NULL )
 	{
	   	 printf("File Open error.\n") ;
		 return -1 ;
    }
     
    printf("File Open Success.") ;
    
    fclose(f) ;
    return 0 ;
}

위의 예제를 실행하면 아래와 같은 화면이 나옵니다.




댓글