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;
}