017. FILE I/O

Posted on by pkchan

C언어로 만든 프로그램에서 파일이 호출되면 운영체제는 어떤 복잡한 과정을 거치고 스트림을 생성하여 가지고 있는 파일의 정보를 프로그램으로 넘겨줍니다. 이런 복잡한 과정을 대행해주는 함수가 fopen() 함수입니다.

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

fopen 함수는 운영체제에서 넘겨준 정보를 FILE 구조체의 멤버로 구성하여 그 구조체의 시작 주소를 반환합니다. 그러므로 FILE 형 포인터를 선언하여 대입해야 합니다. 첫번째 인자는 문자열 상수 형식으로 파일의 이름이 들어갑니다. 운영체제에 따라 파일의 전체 경로를 지정해야 하는 경우도 있습니다. 두 번째 인자는 읽기모드, 쓰기모드 등의 정보가 들어갑니다.

mode meaning of mode
r 파일을 읽기 전용으로 엽니다. 파일은 꼭 있어야 합니다.
w 파일을 쓰기전용으로 엽니다. 파일이 없으면 새로 만들고 있으면 덮어씁니다.
a 파일을 이어쓰기로 엽니다. 파일이 없으면 새로 만들어줍니다.
r+ 파일을 읽기/쓰기용으로 엽니다. 단, 파일이 반드시 있어야 하며 파일이 없으면 NULL을 반환합니다.
w+ 파일을 읽기/쓰기용으로 엽니다. 파일이 없으면 파일을 생성하고, 파일이 있으면 내용을 덮어씁니다.
a+ 파일을 열어 파일 끝에 값을 이어 씁니다. 만약 파일이 없으면 파일을 생성합니다. 읽기는 파일의 모든 구간에서 가능하지만, 쓰기는 파일의 끝에서만 가능합니다.

어떤 이유로 fopen 함수가 파일를 열지 못했을 경우 fopen함수는 NULL을 리턴합니다. 파일 오픈이 실패할 경우 어떤 상황이 생길지 모르므로 성공, 실패 여부를 꼭 확인해야 합니다. 사용한 후에는 fclose() 함수를 통해 스트림을 닫아주어야 합니다.

#include <stdio.h>

int main() {
          
          FILE* fp;
          fp = fopen ("write.txt", "w");

          if(fp == NULL) {

                    printf("err");
                    return 0;

          }

          fclose(fp);
          return 0;

}

Leave a Reply