일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코딩테스트
- 딕셔너리
- programmers
- BFS
- N과M
- 다익스트라
- 구현
- 힙
- 가상메모리 관리
- 재귀
- 에라스토테네스의 체
- 프로그래머스
- level3
- level2
- BOJ
- 브루트포스
- MYSQL
- 그리디
- 백준
- dfs
- 수학
- 운영체제
- 가상메모리
- 파이썬
- 스택
- level0
- DP
- level1
- python
- 다이나믹 프로그래밍
- Today
- Total
동캄의 코딩도장
DISK I/O [4] 본문
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 |