Ascii(text) file
-사람이 바로 읽을 수 있음
- 데이터 저장 및 사용 시, 문자로 (or 문제에서) 변환 과정이 필요함
--> 많은 양의 데이터 처리에 비효율적
--> 동일한 데이터를 저장하는 이진 파일대비 많은 공간을 요구함
Binary file
- 컴퓨터가 바로 사용할 수 있는 형태(메모리에 저장된 형태 그대로 저장)
--> 별도의 변화 과정 없이 읽기/쓰기 가능
---> 데이터 처리에 효율적이며, 저장 공간을 효율적으로 사용 할 수 있음
- 사람이 읽을 수 없는 형태--> 데이터 교환 시 약속(protocol)이 필요함
Binary File
Binary I/O
FILE *fopen (cont char *name, const char *mode)
mode - "rb", "wb", "ab", "rb+", "wb+"
ex)
#include <stdio.h>
size_t fread (void *ptr, size_t size, size_t nmemb, FILE*stream);
size_t fwrite (const void *ptr, size_t size, size_t memb, FILE*stream);
ptr: Pointer to buffer
size: size of an item
nmemb: number of items to read/write
stream
Return : read/write 한 item의 수 | EOF: 파일 끝
Formatted I/O
#include <stdio.h>
int scanf (const char *format, ...)
int fscanf (FILE *stream, cosnt char *format, ..);
int printf (const char *format, ...);
itn fprintf( FILE *stream, const char *format, ...);
format: 입출력 형식
stream
Return => 입출력한 문자 수 | 음수:error
Synchronizing with the disk
#include <stdio.h>
int fflush (FILE *stream);
stream
return (success? 0:-1)
Controlling buffering
#include <stido.h>
int setvbuf (FILE *stream, char *buf, int mode, size_t size);
Standard IO는 3가지 buffering mode 지원 (mode에 적용)
- Unbufferd
- Line-buffered
- Block-buffered