Skip to content

C:fopen

Mode

MODE

읽기

쓰기

생성

r

Yes

No

No (없으면 에러)

w

No

Yes

Yes (있으면 내용 제거)

a

No

Yes (ONLY APPEND)

Yes

r+

Yes

Yes

No (없으면 에러)

w+

Yes

Yes

Yes (있으면 내용 제거)

a+

Yes

Yes (ONLY APPEND)

Yes

  • +는 업데이트 모드(Update mode)이다. 이 모드는 입출력 스트림을 모두 열 수 있다.
  • b는 바이너리 모드로 지정한다. 이 플래그는 Windows에서 유효하다.
  • t는 텍스트 모드로 지정한다. 이 플래그는 Windows에서 유효하다.
  • x

조합 결과:

  • r - 텍스트모드로 읽기.
  • w - 텍스트모드로 쓰기. 파일이 없을경우 새로생성, 존재할시 기존의 내용삭제 후 새로운 내용으로 대체.
  • a - 텍스트모드로 쓰기. 파일이 없을경우 새로생성, 존재할시 파일의 가장 끝부분부터 이어쓰기.
  • rb - 바이너리모드로 읽기.
  • wb - 바이너리모드로 쓰기. 파일이 없을경우 새로생성, 존재할시 기존의 내용삭제 후 새로운 내용으로 대체.
  • ab - 바이너리모드로 쓰기. 파일이 없을경우 새로생성, 존재할시 파일의 가장 끝부분부터 이어쓰기.
  • r+ - 텍스트모드로 읽기, 쓰기가 가능.
  • w+ - 텍스트모드로 읽기, 쓰기가 가능. 파일이 없을경우 새로생성, 존재할시 기존의 내용삭제 후 새로운 내용으로 대체.
  • a+ - 텍스트모드로 읽기, 쓰기가 가능. 파일이 없을경우 새로생성, 존재할시 파일의 가장 끝부분부터 이어쓰기.
  • rb+ - 바이너리모드로 읽기, 쓰기가 가능.
  • wb+ - 바이너리모드로 읽기, 쓰기가 가능. 파일이 없을경우 새로생성, 존재할시 기존의 내용삭제 후 새로운 내용으로 대체.
  • ab+ - 바이너리모드로 읽기, 쓰기가 가능. 파일이 없을경우 새로생성, 존재할시 파일의 가장 끝부분부터 이어쓰기.

Simple example

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

int main()
{
    FILE * f = fopen("test", "w+");
    if (f == 0) {
        printf("File open error.\n");
        return 1;
    }

    char const * str = "TEST";
    fwrite(str, sizeof(char), strlen(str), f);

    fseek(f, 0, SEEK_SET);

    char buffer[100] = {0,};
    int size = fread(buffer, sizeof(char), 4, f);

    printf("Result(%d) %s\n", size, buffer);

    fclose(f);
    return 0;
}

See also

Favorite site