'데이터 입출력'에 대한 개념적 이해
무엇이 '입력'이고 무엇이 '출력'인가?
데이터의 입력과 출력은 프로그램의 흐름을 뜻하는 것임
그렇다면 무엇이 '입력'이고 무엇이 '출력'일까?
입력 : 프로그램 안으로 데이터가 흘러 들어오는 것이 입력
출력 : 프로그램 밖으로 데이터가 흘러 나가는 것이 출력
대표적 입력 장치 : 키보드, 마우스, 파일...
대표적 출력 장치 : 모니터, 파일...
데이터의 이동수단이 되는 스트림
"프로그램상에서 모니터로 문자열을 출력할 수 있는 이유는?"
프로그램상에서 모니터와 키보드를 대상으로 데이터를 입출력 하기 위해서는 이들을 연결시켜 주는 다리가 필요하다.
이러한 다리의 역할을 하는 매개체를 가리켜 '스트림(stream)'이라 한다.
출력 스트림 : 실행중인 프로그램 - 모니터 연결
입력 스트림 : 실행중인 프로그램 - 키보드 연결
printf 함수와 scanf 함수를 통해서 데이터를 입출력 할 수 있는 근본적인 이유
그렇다면 다리의 역할을 하는 스트림의 정체?
운영체제에서 제공하는 소프트웨어적인(소프트웨어로 구현되어 있는) 가상의 다리이다.
운영체제는 외부장치와 프로그램과의 데이터 송수신의 도구가 되는 스트림을 제공
스트림의 생성과 소멸
콘솔(일반적으로 키보드와 모니터) 입출력과 파일 입출력 사이에는 차이점이 있음
파일과의 연결을 위한 스트림의 생성은 우리가 직접 요구 O
콘솔과의 연결을 위한 스트림의 생성은 우리가 직접 요구 X
"콘솔 입출력을 위한 '입력 스트림'과 '출력 스트림'은 프로그램이 실행되면 자동으로 생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림"
이 둘은 기본적으로 제공되는 '표준 스트림(standard stream)' 이다.
stdin | 표준 입력 스트림 | 키보드 대상으로 입력 |
stdout | 표준 출력 스트림 | 모니터 대상으로 출력 |
stderr | 표준 에러 스트림 | 모니터 대상으로 출력 |
Stram
스트림은 '한 방향으로 흐르는 데이터의 흐름'을 뜻한다.
즉 스트림이란 단어에는 단 방향으로만 데이터 전송이 이뤄진다는 뜻.
실제로 입출력 스트림도 입력 스트림과 출력 스트림이 구분되어서 한 방향으로만 데이터 흐름을 유지.
참고 : [윤성우 열혈 C 프로그래밍] - 대부분의 내용 및 코드는 이 책에서 개인 공부 정리 목적으로 참고하였습니다.
'Language&Framework&Etc > C' 카테고리의 다른 글
문자와 문자열 관련 함수(21-3) 문자열 단위 입출력 함수 (0) | 2020.12.10 |
---|---|
문자와 문자열 관련 함수(21-2) 문자 단위 입출력 함수 (0) | 2020.12.10 |
함수 포인터와 void 포인터(19-2) main 함수로의 인자 전달 (0) | 2020.12.10 |
함수 포인터와 void 포인터(19-1) 함수 포인터와 void 포인터 (0) | 2020.12.10 |
다차원 배열과 포인터의 관계(18-2) 2차원 배열이름의 특성과 주의사항 (0) | 2020.12.10 |