동캄의 코딩도장

DISK I/O [4] 본문

CS/시스템프로그래밍

DISK I/O [4]

동 캄 2022. 2. 7. 11:41

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

'CS > 시스템프로그래밍' 카테고리의 다른 글

File System [1]  (0) 2022.03.18
DISK I/O [5]  (0) 2022.02.07
DISK I/O [3]  (0) 2022.02.07
DISK I/O [2]  (0) 2022.02.04
DISK I/O [1]  (0) 2022.02.04