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)함수는 stream를 path파일과 연결
한다. 이때 최초의 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장. fopen(3)
파일로 부터 스트림을 생성한다.
1.1. 사용법
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 에 대해서 지정해줄수 있다.
파일을 읽기 전용으로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.
파일을 읽기/쓰기로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.
쓰기전용의 파일을 열기 위해서 사용된다. 열린 파일크기는 0 이되며, stream 포인터(:12)의 위치는 파일의 시작위치를 가리킨다.
파일을 읽기/쓰기로 연다. 파일이 이미 존재한다면, 파일의 크기는 0이 된다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.
쓰기위해서 파일을 연다. 파일이 존재하지 않는다면 새로 생성한다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.
파일을 읽기/쓰기로 연다. 파일이 존재하지 않는다면 새로생성한다. stream 포인터의 위치는 파일을 끝을 가리킨다.
fdopen(3)함수는 파일지정자 fildes로 부터 스트림을 얻어온다. mode는 fopen에 사용하는 것들을 그대로 사용할 수 있다. 그렇지만 파일지정자의 mode와 조화를 이룰 수 있어야 한다.
freopen(3)함수는 stream를 path파일과 연결 한다. 이때 최초의 stream은 닫히게 된다. mode는 fopen에서 사용하는 것과 동일하다. 이함수는 stderr(:12), stdin(:12), stdout(:12) 등을 파일과 연결시키고자 할때 주로 사용한다.
1.4. 에러
잘못된 mode를 지정했을 경우
1.5. 예제
1.6. 참고문헌
open(2)
fopen(3)
fileno(3)
stdio.h 사용하기
Recent Posts
Archive Posts
Tags