[Linux] 파일 열고 닫기 API

HYEOB KIM·2022년 8월 19일
1

Linux

목록 보기
11/11

파일 열기 API

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

파라미터

  • pathname : 파일 경로
  • mode : 파일 열기 모드(r, r+, w, w+, a, a+)

반환값

  • 성공 시 열린 파일 포인터(stream)
  • 실패 시 NULL

파일 열기 모드

모드읽기쓰기파일 포지션파일 존재시파일 부재시
r (read)OX파일 시작성공실패
r+OO파일 시작성공실패
w (write)XO파일 시작기존 파일 제거 후 생성생성
w+OO파일 시작기존 파일 제거 후 생성생성
a (append)XO파일 끝성공생성
a+OO읽기 : 파일 시작, 쓰기 : 파일 끝성공생성

파일 닫기 API

int fclose(FILE *stream)

파라미터

  • stream : 열린 파일 포인터

반환값

  • 성공시 0
  • 실패시 EOF

API 실습

먼저 file_open.c 파일을 작성합니다.

$ vim file_open.c

file_open.c

#include <stdio.h>

int write_to_file(void) {
	FILE *fp;
    
    fp = fopen("data", "w");
    if (fp == NULL) {
    	perror("fopen error\n");
        return -1;
    }
    
    fputs("hello world..\n", fp);
    fclose(fp);
    
    return 0;
}

int main(int argc, char **argv) {
	if (write_to_file()) {
    	perror("write to file\n");
        return -1;
    }
    
    return 0;
}

컴파일 후 파일을 실행하고 data 파일이 생성된 것을 볼 수 있습니다.
data 파일의 내용을 조회해보면 fputs로 넣었던 hello world..이 쓰여져 있는 것을 볼 수 있습니다.

# 컴파일
$ gcc -o file_open.c

$ ./file_open.c

$ ls -al
data	file_open.c

$ cat data
hello world..

이번엔 파일을 실행했을 때 data 파일의 문구를 읽어서 터미널에 출력하는 기능을 추가적으로 구현하겠습니다.

file_open.c

#include <stdio.h>
#include <string.h>

int write_to_file(void) {
	FILE *fp;
    
    fp = fopen("data", "w");
    if (fp == NULL) {
    	perror("fopen error\n");
        return -1;
    }
    
    fputs("hello world..\n", fp);
    fclose(fp);
    
    return 0;
}

int read_from_file(void) {
	FILE *fp;
    char buf[1024];
    
    fp = fopen("data", "r");
    if (fp == NULL) {
    	perror("fopen error\n");
        return -1;
    }
    
    memset(buf, 0, sizeof(buf));
    fgets(buf, sizeof(buf), fp);
    fclose(fp);
    
    printf("%s\n", buf);
    
    return 0;
}

int main(int argc, char **argv) {
	if (write_to_file()) {
    	perror("write to file\n");
        return -1;
    }
    
    if (read_from_file()) {
    	perror("read to file\n");
        return -1;
    }
    
    return 0;
}

컴파일 후 파일을 실행하면 data 파일이 생성되면서 hello world.. 문구가 파일에 쓰여지고 이것을 읽으면서 터미널에 문구가 출력됩니다.

# 컴파일
$ gcc -o file_open.c

$ ./file_open.c
hello world..
profile
Devops Engineer

0개의 댓글