C언어에서 파일 입출력을 제어 할려면 먼저 파일을 열어야 한다.

C언어 파일 입출력 함수 fopen() 함수이다


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

 

fopen(파일명, 열기모드)

 

파일 명

액세스할 대상 파일의 이름을 적어야 한다.
필요할 경우 디렉토리 경로까지 지정해야 한다.
경로가 생략되고 파일 이름만 주어질 경우 현재 디렉토리에서 파일을 찾게 된다.

파일명의 경우 도스나 윈도우는 대소문자를 구분하지 않으나 유닉스, 리눅스의 파일 시스템은 대소문자를 구분하므로 실제 파일명과 동일하게 일치시켜야 된다.
이 부분 유의해서 사용해야 한다.


열기모드

모드에 따라 파일의 상태가 달라지므로 모드는 매우 중요하다.
이 부분에서 실수도 많이 일어나고 버그도 많이 발생할수 있다.

r
읽기 전용.
이 모드로 연 파일은 읽을 수만 있다.
쓰기 불가.
파일이 없을 경우 에러로 리턴을 한다.
 
w
쓰기 전용.
이 모드로 연 파일은 쓰기만 가능하다.
파일이 없을 경우 파일을 생성.

 

a
추가 용
추가란 파일의 끝에 정보를 쓴다는 뜻.
이 모드로 연 파일은 파일 포인터가 파일의 끝을 가르킨다.
파일이 없을 경우 파일을 생성.

 

r+
읽고 쓰기용
파일이 없을 경우 에러 리턴
 
w+
읽고 쓰기용
파일이 없을 경우 파일을 생성.
 
a+
읽고 쓰기용
파일이 없을 경우 파일을 생성.
 

리턴값

fopen은 파일을 지정한 모드로 열고 입출력에 필요한 구조체를 생성 후 그 포인터를 리턴한다.
에러가 발생하면 NULL을 리턴한다.
파일 입출력시에는 여러 가지 이유로 에러가 발생할 수 있다.
이 함수의 리턴값은 반드시 확인해야 한다.

 

 

 

 


fopen 예제)

FILE *fp;

fp = fopen("c:\home\test.txt","rb");

if (fp == NULL) {
     printf("파일이 없음\n");
}

 

fclose()

 

fopen으로 성공적으로  파일 열기를 했다면 파일을 다 사용한 후에는 반드시 파일을 닫아야 한다.
이때 사용하는 함수가 fclose다.
fopen이 에러가 발생했을 경우 fclose를 사용할 필요가 없다.

 

int fclose(FILE *stream);

 

flcose 예제)

FILE *fp;

fp = fopen("c:\home\test.txt","rb");

if (fp == NULL)
{
     printf("파일이 없음\n");
}
else
{
 printf("fopen 성공\n"); 
 flcose(fp);
}

 

Posted by 서땡글
,