24장. 파일 입출력
24-1 파일의 개방(Open)과 종결(Close) 데이터를 주고 받을 수 있는 스트림의 생성 파일 개방 모드 파일 접근 모드 + 데이터 입출력 모드 #include <stdio.h> FILE* fopen(const char * filename, const char * mode) 성공 시 해당 파일의 파일 포인터, 실패 시 NULL 포인터 리턴
24-1 파일의 개방(Open)과 종결(Close) 파일 접근 모드 개방한 파일의 사용 용도를 결정 표 24-1 참조 : r, w, a, r+, w+, a+ 데이터 입출력 모드 모드 의미 t 텍스트 모드(text mode) b 2진 모드(binary mode)
24-1 파일의 개방(Open)과 종결(Close) CR & LF CR은 특수문자 '\r'로 표시 LF는 특수문자 '\n'로 표시 예제 carriage.c, CR_LF.c 참조 그림 24-1
24-1 파일의 개방(Open)과 종결(Close) 텍스트 모드와 2진 모드의 차이점 그림 24-2
24-1 파일의 개방(Open)과 종결(Close) 파일 개방 모드의 완성 그림 24-3
24-1 파일의 개방(Open)과 종결(Close) FILE 구조체의 포인터 fopen 함수의 리턴 타입 흔히 파일 포인터라 불린다. 개방한 파일에 대한 여러 가지 정보를 지니는 변수를 가리키는 포인터 FILE 구조체 포인터의 용도 데이터 입출력 함수의 호출 위치 정보의 참조 파일의 끝 확인
24-1 파일의 개방(Open)과 종결(Close) 스트림의 종결을 의미함 file_basic.c 참조 #include <stdio.h> int fclose(FILE * stream) 종료가 오류 없이 제대로 이뤄지면 0을 리턴
24-2 파일 입출력 함수 표 24-3 스트림 기능 키보드/모니터 선택(키보드/모니터, 파일) 문자 출력 24-2 파일 입출력 함수 스트림 기능 키보드/모니터 선택(키보드/모니터, 파일) 문자 출력 int putchar(int c) int fputc(int c, FILE* stream) 문자 입력 int getchar(void) int fgetc(FILE* stream) 문 자 열 출 력 int puts(const char* s) int fputs(const char* s, FILE* stream) 입 력 char* gets(char* s) char* fgets(char* s, int n, FILE* stream) 형식 지정 int printf(const* format, ...) int fprintf(FILE* stream, const char* format, ...) int scanf( int fscanf(FILE* stream, 표 24-3
24-2 파일 입출력 함수 파일 위치 지시자 FILE 구조체 변수의 멤버로서 존재 24-2 파일 입출력 함수 파일 위치 지시자 FILE 구조체 변수의 멤버로서 존재 READ & WRITE에 대한 위치 정보가 된다. 입출력 함수의 호출에 의해 이동 순차적인 입력 및 출력이 가능한 이유 그림 24-4
24-3 파일의 끝을 확인합시다. 리턴 값 참조에 의한 구분 eof_prob1.c 참조 그림 24-5
24-3 파일의 끝을 확인합시다. feof 함수를 사용하는 방법 FILE 구조체 변수를 참조하는 방법 eof_pro3.c 참조 24-3 파일의 끝을 확인합시다. feof 함수를 사용하는 방법 FILE 구조체 변수를 참조하는 방법 eof_pro3.c 참조 #include <stdio.h> int feof(FILE * stream) 파일의 끝에 도달한 경우 0이 아닌 값을 리턴
24-4 Random Access 파일 입출력 함수 특정 위치 임의 접근 방식의 입출력 #include <stdio.h> int fseek(FILE * stream , long offset, int wherefrom) 성공 시 0을, 실패 시 0이 아닌 값을 리턴한다. 만약에 wherefrom이 파일 위치 지시자를 offset 만큼 이동하기 전에 SEEK_SET(0) 이라면 파일의 맨 앞으로 이동한다. SEEK_CUR(1) 이라면 이동하지 않는다. SEEK_END(2) 이라면 파일의 끝으로 이동한다. 표 24-5
24-4 Random Access 파일 입출력 함수 fseek 함수의 사용 예 fseek.c 참조 그림 24-8