24-1 파일의 open과 close
- 파일을 open한다는 것은 파일과 데이터를 주고 받을 수 있는 스트림을 생성한다는 의미이다.
FILE* fopen(const char* filename, const char* mode)
- 두번째 인자인 mode는 open하는 파일의 특징 및 용도를 결정한다.
* 파일 접근 모드
- r : 읽기 가능
- w : 쓰기 가능, 파일이 존재하면 지워버리고 새로 쓴다.
- a : 쓰기 가능, 파일이 존재하면 그 뒤에 추가해서 쓴다.
- r+ : 읽고 쓰기 가능, 파일이 존재하면 그 위에 덮어 쓴다.
- w+ : 읽고 쓰기 가능, 파일이 존재하면 지워버리고 새로 쓴다.
- a+ : 읽고 쓰기 가능, 파일이 존재하면 그 뒤에 추가해서 쓴다.
* 데이터 입출력 모드
- t : 텍스트 모드
- b : 2진 모드
- Carriage Return : 특수문자 \r로 표현되며, 커서의 위치를 줄 맨 앞으로 이동시킨다.
- Line Feed : 특수문자 \n으로 표현되며, 커서를 한 줄 아래로 이동시킨다.
- C의 소스코드에서의 \n은 텍스트 파일상에서 \r\n과 같은 의미이다. 텍스트 모드에서는 이 변환이 일어나지만 2진 모드에서는 일어나지 않는다.
- fopen함수의 리턴값은 파일 포인터이다.
int fclose(FILE * stream);
- 파일을 닫는다. 정상적으로 동작하면 0을 리턴한다.
24-2 파일 입출력 함수
- 문자,문자열 입출력 함수를 파일 입출력에 사용한다. 사용하는 스트림을 파일 포인터로 쓸 뿐이다.
int fprintf(FILE* stream, const char* format, ....)
int fscanf(FILE* stream, const char* format, ...)
-형식 지정 입출력 함수를 사용할 수 있다.
- 파일 포인터 내에는 파일 위치 지시자가 존재하여 어디까지 읽었는지/썼는지 알 수 있다.
24-3 파일의 끝
- 파일의 끝에서 fgetc, fscanf는 -1을, fgets는 0을 리턴한다.
- 함수 fgetc의 리턴 값을 char형에 저장할 경우, 숫자 -1과 EOF를 구별할 수 없게 된다. 따라서 int형에 저장해야한다.
int feof(FILE *stream);
- 파일의 끝에 도달한 경우 0이 아닌 값을 리턴한다.
24-4 Random Access 파일 입출력
- 파일 위치 지시자를 임의의 위치로 이동시킬 수 있다.
int fseek(FILE *stream, long offset, int wherefrom);
- 성공했을 경우 0을 리턴한다.
- wherefrom의 값은 0/1/2를 가지고, 각각 맨 앞/현재/맨 뒤를 의미한다.
'학부 전공 > C' 카테고리의 다른 글
26. 매크로와 전처리기 (0) | 2010.07.16 |
---|---|
25. 메모리 관리와 동적 할당 (0) | 2010.07.16 |
23. 구조체와 사용자 정의 자료형 2 (0) | 2010.07.15 |
22. 구조체와 사용자 정의 자료형 (0) | 2010.07.15 |
21. 문자와 문자열 처리 함수 (0) | 2010.07.15 |