Chapter 13. 파일 입출력
1. 파일 입출력
- 표준 입출력 함수
· 출력 장치인 Monitor로는 출력을, 입력 장치인 Keyboard로는 입력을 수행한다.
· 파일 처리 함수는 보조기억장치 파일에 데이터를 입출력 한다.
- 파일 입출력 Mode
· Text Mode
◦ Program에서 파일로 읽어 들이거나 쓰는 경우에 데이터 변환이 일어나는 입출력 Mode
◦ 일반적인 문자열 같은 Text 기반의 데이터에 사용한다.
· Binary Mode
◦ 변환을 하지 않는 데이터를 입출력하는 Mode
◦ 영상 데이터와 같이 데이터 변환이 발생하면 안 되는 경우에 사용한다.
- FILE Pointer를 이용한 파일 입출력
· 파일 입출력 수행과정
◦ 파일 열기
◦ 입출력 수행
◦ 파일 닫기
- 파일 모드
모드 |
스트림의 성격 |
파일이 없을 시 |
r |
읽기 가능 |
Error |
w |
쓰기 가능 |
Create |
a |
파일 끝에 덧붙여 쓰기 가능 |
Create |
r+ |
읽기 쓰기 가능 |
Error |
w+ |
읽기 쓰기 가능 |
Create |
a+ |
읽기 덧붙여 쓰기 가능 |
Create |
· Text Mode는 t를, Binary Mode는 뒤에 b를File Mode의 뒤에 붙인다.
2. 파일 입출력 관련 함수
- 파일 입출력 관련 함수
· fopen
1 |
FILE * fopen(const char *filename, const char *mode) |
cs |
◦ fopen 함수가 호출되면 System 내에 FILE 구조체 변수가 생성되며 생성된 구조체 변수에는 해당 파일에 대한 정보가 담긴다.
◦ FILE 구조체의 Pointer는 파일을 가리키는 지시자 역할을 한다.
◦ Parameter
▹ filename : 파일 이름
▹ mode : 출력과 입력, Text와 Binary를 구분한다.(파일 모드 참조)
▹ 구조체 생성 과정
· fclose
1 |
int fgetc(FILE *stream) |
cs |
◦ 운영체제가 할당한 자원을 반환하는 역할을 하며 Buffering되어 있던 데이터의 출력
· fgetc
1 |
int fgetc(FILE *stream) |
cs |
◦ 스트림에서 즉, FILE 구조체를 통해 파일 내의 한 문자를 읽어오는 함수
◦ 파일 내에 입력된 문자를 반환하지만 끝 문자를 만나면 EOF를 가지게 되기 때문에 정수형 변수(int)에 대입해야 한다.
· fputs
1 |
int fputs(const char *string, FILE *stream) |
cs |
◦ 스트림에 문자열을 출력 즉, 파일에 문자열을 입력하는 함수로 개행 문자(\n)를 포함해 한 번에 입력한다.
◦ NULL 문자 이전까지 모두 입력하므로 문자열 끝은 NULL로 끝나야한다.
◦ 출력된 마지막 문자를 반환하며 Error가 발생하면 EOF를 반환한다.
· fgets
1 |
char *fgets(char *s, int n, FILE *stream); |
cs |
◦ 스트림에서 즉, FILE 구조체를 통해 파일 내의 문자열을 읽어와 문자열 변수(char *s)에 저장하는 함수이다.
◦ 개행 문자(\n) 또는 두 번째 매개변수(int n)의 길이까지 읽어 들인다.
◦ 개행 문자의 영향을 받기 때문에 행단위로 읽어 들일 경우 많이 사용한다.
◦ 반환형은 문자열이 저장된 배열의 주소이기 때문에 파일의 끝을 만나 저장된 문자열이 없는 경우 NULL을 반환한다.
· fprintf
1 |
int fprintf(FILE *stream, const char *format [,argument]...); |
cs |
◦ 스트림에서 서식화된 데이터 즉, 인코딩이 되어 형식이 바뀐 데이터를 출력하기 위해 사용되는 함수이다.
◦ 매개변수로 FILE Pointer를 사용하는 것 외에 printf와 동일하다.
· fscanf
1 |
int fscanf(FILE *stream, const char *format [,argument]...); |
cs |
◦ 스트림에서 서식화된 데이터 즉, 인코딩이 되어 형식이 바뀐 데이터를 읽어오기 위해 사용되는 함수이다.
◦ 매개변수로 FILE Pointer를 사용하는 것 외에 printf와 동일하다.
· fcloseall
1 |
int fcloseall(); |
cs |
◦ 열려있는 모든 스트림(파일)을 닫는다.
'C Langauage' 카테고리의 다른 글
Chapter 12. 포인터 고급 (0) | 2015.08.05 |
---|---|
Chapter 11. 구조체(Struct) (0) | 2015.08.05 |
Chapter 10. 전처리기(Preprocessor) (0) | 2015.08.05 |
Chapter 9. 문자열(String) (0) | 2015.08.05 |
Chapter 8. 포인터(Pointer) (0) | 2015.08.05 |