국비지원 학원 - JAVA기반 스마트앱 개발2021/프로그래밍 언어활용
파일 입출력 라이브러리(응용)
KDONG
2021. 8. 8. 13:51
학습내용
- 텍스트 파일 입출력
- 이진 파일 입출력
학습목표
- 형식화된 데이터를 파일 입출력으로 처리하는 방법을 구현할 수 있다.
- 이진 파일 입출력 처리의 기본 문법에 대해 설명할 수 있다.
텍스트 파일 입출력
1. fscanf
항목 | 내용 |
함수원형 | int *fscanf( FILE *stream, const char *format, ...); |
헤더 | stdio.h |
기능 | 형식화된 문자열을 파일로부터 입력 |
매개변수 | FILE *stream -> 읽고자 하는 FILE 포인터 const char *format -> 읽어들일 데이터 서식 |
반환값 | 읽기에 성공했다면 읽어들인 항목 개수를 반환하고 실패나 오류가 발생하면 -1을 반환 |
변환문자열 | 내용 |
%o | 8진 정수 형식으로 입력 |
%d | 10진 정수 형식으로 입력 |
%ld | long형 10진 정수 형식으로 입력 |
%x | 16진 정수 형식으로 입력 |
%f | float형 형식으로 입력 |
%lf | double형 형식으로 입력 |
%c | 문자 형식으로 입력 |
%s | 문자열 형식으로 입력 |
2. rewind
항목 | 내용 |
함수원형 | void rewind(FILE *stream); |
헤더 | stdio.h |
기능 | 파일의 읽기/쓰기 위치를 파일의 처음 위치로 초기화 |
매개변수 | FILE *stream -> 대상 파일 스트림 |
반환값 | void |
3. fprintf
항목 | 내용 |
함수원형 | int *fprintf(FILE *stream, const char *format, ...); |
헤더 | stdio.h |
기능 | 형식화된 문자열을 파일로 출력 |
매개변수 | FILE *stream -> 출력하고자 하는 FILE 포인터 const char *format -> 출력할 데이터 서식 |
반환값 | 출력에 성공하면 출력한 문자열을 반환하고 실패나 오류가 발생하면 -1을 반환 |
- 형식 문자열의 구조
%[*] [width] [{ h | 1 | L }] type |
이진 파일 입출력
1. fread
항목 | 내용 |
함수원형 | size_t fread( void *ptr, size_t size, size_t nitems, FILE *stream); |
헤더 | stdio.h |
기능 | 이진(Binary) 파일로부터 입력 |
매개변수 | void *ptr -> 파일 내용을 읽어들일 메모리 포인터 size_t size -> 데이터 하나의 크기 size_t nitems -> 읽을 데이터의 개수 FILE *stream -> 대상 파일 스트리 |
반환값 | 읽어들인 데이터 개수를 반환, 오류가 발생하면 -1을 반환 |
2. fwrite
항목 | 내용 |
함수원형 | size_t fwrite( void *ptr, size_t size, size_t nitems, FILE *stream); |
헤더 | stdio.h |
기능 | 파일에 버퍼 내용을 출력 |
매개변수 | void *ptr -> 파일 내용에 출력할 메모리 포인터 size_t size -> 데이터 하나의 크기 size_t nitems -> 쓰기 할 데이터의 개수 FILE *stream -> 대상 파일 스트리 |
반환값 | 출력한 데이터 개수를 반환, 오류가 발생하면 -1을 반환 |
3. fseek
항목 | 내용 |
함수원형 | int fseek( FILE *stream, long offset, int whence); |
헤더 | stdio.h |
기능 | 파일의 읽기/쓰기 위치를 이동 |
매개변수 | FILE *stream -> 대상 파일 스트림 long offset -> 이동할 바이트 수 int whence -> 시작 시점 |
반환값 | 함수 실행이 성공하면 0을 반환, 오류가 발생하면 0이 아닌 값을 반환 |
whence | 설명 |
SEEK_SET | 파일의 시작 |
SEEK_CUR | 현재 읽기/쓰기 포인터 위치 |
SEEK_END | 파일의 끝 |
4. ftell
항목 | 내용 |
함수원형 | long ftell( FILE *stream); |
헤더 | stdio.h |
기능 | 파일의 읽기/쓰기 위치를 확인 |
매개변수 | FILE *stream -> 대상 파일 스트림 |
반환값 | 읽기/쓰기 위치를 반홖, 오류가 발생하면 -1을 반홖 |
학습정리
1. 텍스트 파일 입출력
- 형식화된 문자열을 이용한 파일 입출력은 fscanf, fprintf 를 이용
- - int *scanf( FILE *stream, const char *format, ...);
- - int *fprintf( FILE *stream, const char *format, ...);
- rewind는 파일의 읽기/쓰기 위치를 처음 위치로 이동임
2. 이진 파일 입출력
- 이진 파일의 입출력은 fread, fwrite를 이용
- fseek는 지정한 거리만큼 포인터를 이동
- ftell은 현재 포인터의 위치를 반환