# 입력과 출력
+ 입력 : 프로그램 안으로 데이터가 들어오는 것
ex) 키보드, 파일, 마우스 ...
+ 출력 : 프로그램 밖으로 데이터가 나가는 것
ex) 모니터, 파일, 프린터 ...
# 스트림
+ 스트림(stream) : 한 방향으로 흐르는 데이터의 흐름
- 한 방향으로만 데이터의 전송이 이뤄진다.
- 프로그램에서 데이터를 입출력하기 위해 입력장치, 출력장치를 프로그램과 연결시켜 주는 다리 역할을 하는 매개체
- 운영체제에서 제공하는 소프트웨어로 구현된 가상의 다리
- 외부장치와 프로그램 사이의 데이터 송수신 도구
+ 스트림의 생성과 소멸
키보드와 모니터등등의(콘솔) 연결을 위한 스트림의 생성은 자동으로 생성된다.
즉, 콘솔 입출력을 위한 입-출력 스트림은 프로그램 실행시 자동으로 생성되고, 종료시 자동으로 소멸된다.
>> 기본적으로 제공되는 표준 스트림 (stdin 표준입력스트림, stdout 표준출력스트림, stderr 표준에러스트림)
# 표준 입출력
+ 표준 입출력 함수
>> printf(), scanf(), getchar(), putchar(), fgets(), fputs, ....
- 표준 입출력 함수를 통해서 데이터를 입출력하는 경우, 이 데이터들은 운영체제가 제공하는 메모리 버퍼를 거친다.
+ 메모리 버퍼 : 데이터를 임시로 '모아두는(저장하는)' 메모리 공간
+ 버퍼링(Buffering) : 버퍼에 데이터를 저장
- 버퍼링의 이유, 장점 ?
외부 장치와의 데이터 입출력은 시간이 오래걸려 효율성이 떨어진다. 따라서 데이터가 들어올 때마다 전송하기보다 데이터를 어느 정도 모아서 한번에 전송하는 것이 빠르고 효율적이다. 따라서 버퍼링을 통해 데이터를 전달한다.
2021.12.23 - [42_san (42seoul)/ft_printf] - [ printf ] 0. 문제 이해하기
그렇다면 문제의 제시 [ 실제 printf처럼 버퍼 관리를 수행해서는 안된다.] 를 수행하려면 어떻게 로직을 짜야할까?
[참고]
윤성우의 열혈 C프로그래밍 - 윤성우 저
'42seoul > circle-1' 카테고리의 다른 글
[ born2beroot ] 0. 과제 이해하기 (0) | 2022.02.04 |
---|---|
[ft_printf] 2. 가변인자 (variadic arguments) (0) | 2022.01.16 |
[ ft_printf ] 1. printf (0) | 2021.12.29 |
[ printf ] 0. 문제 이해하기 (0) | 2021.12.23 |
[ GNL ] 04. 선행지식_read() 함수 (0) | 2021.11.03 |
댓글