Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Docbook 원문

fopen(3)

1장. fopen(3)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제
1.6. 참고문헌

파일로 부터 스트림을 생성한다.


1.1. 사용법

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
		


1.2. 설명


1.3. 반환값

fopen 은 종종 open(2) 함수와 비교되어서 설명된다. byte(:12) 단위로 열린파일을 다루는 open 과는 달리 fopen 는 stream 단위로 열린파일의 데이타를 다룬다. 즉 fopen 은 자체적으로 버퍼를 관리함으로써, 함수 사용자가 저수준에서 다루어야할 많은 것들을 대신 해결해 줌으로 좀더 쉽게 사용할수 있다.

path 에 지정된 파일을 mode 에 주어진 모드로 연다.

이 함수는 fputs(3), fgets(3), ungetc(3), getc(3) 등과 같이 쓰이며 표준 I/O(입출력) 함수라고 부른다.

다음과 같은 mode 를 path 에 대해서 지정해줄수 있다.

r

파일을 읽기 전용으로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

r+

파일을 읽기/쓰기로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

w

쓰기전용의 파일을 열기 위해서 사용된다. 열린 파일크기는 0 이되며, stream 포인터(:12)의 위치는 파일의 시작위치를 가리킨다.

w+

파일을 읽기/쓰기로 연다. 파일이 이미 존재한다면, 파일의 크기는 0이 된다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a

쓰기위해서 파일을 연다. 파일이 존재하지 않는다면 새로 생성한다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a+

파일을 읽기/쓰기로 연다. 파일이 존재하지 않는다면 새로생성한다. stream 포인터의 위치는 파일을 끝을 가리킨다.

fdopen(3)함수는 파일지정자 fildes로 부터 스트림을 얻어온다. mode는 fopen에 사용하는 것들을 그대로 사용할 수 있다. 그렇지만 파일지정자의 mode와 조화를 이룰 수 있어야 한다.

freopen(3)함수는 streampath파일과 연결 한다. 이때 최초의 stream은 닫히게 된다. mode는 fopen에서 사용하는 것과 동일하다. 이함수는 stderr(:12), stdin(:12), stdout(:12) 등을 파일과 연결시키고자 할때 주로 사용한다.


1.4. 에러

EINVAL

잘못된 mode를 지정했을 경우

이 외의 에러는 open(2)와 동일하다.


1.5. 예제

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    FILE *fp;

    fp = fopen("/home/test/test.txt", "r");
    if (fp == NULL)
    {
        perror("File open error: ");
        exit(0);
    }
    // 표준 I/O 함수를 이용한 여러가지 작업을 한다.  

    fclose(fp);
    return 0;
}
		


1.6. 참고문헌

  1. open(2)

  2. fopen(3)

  3. fileno(3)

  4. stdio.h 사용하기