Chapter 03. 표준 입출력 도구 (내용 요약)
입출력
User가 kernel에 직접적으로 접근할 수 없기 때문에 Kernel에서 User로 파일을 내주어 쓰거나 읽도록 해주었는데,
이 File에는 입, 출력 Buffer를 가지고 있고, 입출력 함수들은 이 Buffer에 있는 문자를 가져오거나, 이 Buffer에 문자를 쓰는 역할을 하는 것이다.
Buffer란?
Start --> A --> B --> End
(복사) (복사) (복사)
어떤 정보를 시작 지점에서 끝 지점까지 전달할 때 중간중간에 거쳐가는 경우가 있는데, 이렇게 거쳐가는 Memory를 Buffer라고 한다.
Buffered I/O : getchar(), scanf(), gets()
NonBuffered I/O : _getch()
getchar() : buffer에 있는 문자를 하나씩 가져온다.
scanf() : buffer에 있는 문자를 형식에 맞춰서 가져온다.
gets() : buffer에 있는 문자를 한줄씩 가져온다.
(이 함수들은 보안 결함으로 인해 _s가 붙은 함수를 사용하도록 한다. - scanf_s는 윈도우만 존재함..)
※ File *fp = stdin 을 사용해서 stdin의 내용을 확인할 수 있다
_getch() : 키보드에서 발생하는 인터럽트를 파악해 문자를 가져온다.
fflush() : out buffer를 비우는 함수 (windows에 한해 input buffer도 가능)
대체 - scanf("%*c", buffer);
- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)