파일 입출력 1
- File Pointer

- 파일 포인더는 물리적 디스크의 파일에 접근하는 타입이며 구성요소에는 세가지가 존재합니다.
파일의 시작지점, 파일의 종료지점, 현재 파일을 읽고있는 위치를 기억합니다. 일반적으로 C에서 파일을 열기 위해서는 fopen 이라는 함수를 활용하여 파일을 열게 됩니다.
- fopen( ... )








//가장 많이 쓰이는 코드 예제
예제코드)
1. 파일 읽고쓰기
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main() {
FILE* infile = fopen("text.txt", "r");
char input[100];
fscanf(infile, "%99[^\n]s", input);
fclose(infile);
printf("%s", input);
return 0;
}
- 바이너리 데이터
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main() {
//FILE* infile = fopen("text.txt", "w");
//int value = 487651;
//fwrite(&value, sizeof(int), 1, infile);
//fclose(infile);
FILE* infile = fopen("text.txt", "r");
int value;
fread(&value, sizeof(int), 1, infile);
fclose(infile);
printf("%d", value);
return 0;
}
- 우리는 이번시간에 C형식으로 파일을 읽는것을 배웁니다. C형식이라고 해서 특별한 것은 없고 C에서 기본적으로 제공했던 함수를 활용해서 파일 입출력을 한다고 받아들이시면 되겠습니다. C형식으로 하는 이유는 파일 입출력에 한해서는 C++형식의 파일 입출력이 굉장히 복잡하고 배우기 어렵기 때문입니다. fopen에는 여러가지 옵션이 존재하며, 그 중에서 가장 많이 사용되는 옵션은
"w" 와 "r+" 옵션입니다.
- fwrite( ... )

- fwrite는 일반적으로 파일을 저장할 때 가장 많이 사용하는 함수중 하나로 포인터 와 포인터로 입력된 실제 값의 byte수를 지정하고, 파일포인터를 마지막에 입력받아 해당 파일 포인터에 값을 binary형태로 저장하는 함수입니다.
- fread( ... )

- fread는 일반적으로 binary형태로 파일을 읽어올 때 가장 많이 사용하는 함수중 하나로 포인터에 파일에서 입력될 실제 값의 byte수를 지정하고 파일포인터를 마지막에 입력받아 해당 포인터에 파일포인터에서 읽어온 byte 값 만큼을 binary 형태로 읽어오게 됩니다.
- 파일 입출력에 대한 간단한 예제코드들
- 이 부분부터는 파일 입출력에 대한 간단한 예제코드들을 통해서 실제 파일 입출력이 어떻게 이루어지는지에 대해 확인합니다.
- 텍스트 파일과 바이너리 파일의 차이
- 실제 값들이 파일에 저장될 때, 이 방법에 따라 텍스트 파일과 바이너리 파일로 나눌 수 있습니다. 이 두 가지 차이를 직접 코드와 Hex 에디터를 통해 알아보게 됩니다.
- 파일 입출력의 어려움에 대해
- 현업에서 실제로 파일 입출력을 할 때 이런식으로 저수준의 동작제어를 하지는 않고 대부분 라이브러리를 활용하여 파일 입출력을 하게 됩니다. 때문에 우리가 현업에 들어가게 되면 이런 방법으로 파일을 처리하지는 않게 되지만 우리가 파일 입출력에 대한 원리 정도는 정확하게 알고 있어야 해당 라이브러리를 사용하는데에도 문제가 없습니다.