본문 바로가기
Programming/C,C++

[C언어] 스트림(stream)이란?

by yoiii 2020. 12. 19.

● 데이터의 입력과 출력


fopen, fgets, fclose.. 등등의 함수를 사용하다 보면, 스트림 이라는 단어가 나온다.

스트림에 대해 이해하기 위해서는, 데이터의 '입력'과 '출력'에 대한 개념을 알아야 한다.

데이터의 입출력은 간단히 말해서, 프로그램의 흐름이다.

프로그램 밖으로 나가면 출력이고, 프로그램 안으로 들어오면 입력이다.

 

대표적인 입력의 예시로는 키보드 혹은 파일(txt..등등)이 있다.

또한, 대표적인 출력의 예시로는 모니터가 있으며, 파일도 마찬가지로 출력의 대상이 될 수 있다.

 

● 스트림(STREAM)


스트림은 앞서 말한 데이터의 입출력을 연결해 주는 역할을 한다.

마치 객체 사이의 "다리" 같은 것이다.

C드라이브에서 D드라이브로 파일을 옮긴다고 가정해 보자.

드래그 앤 드랍만 하면 손 쉽게 옮겨지지만, 사실은 운영체제가 스트림을 형성해 줘서 우리가 편리하게 사용이 가능한 것이다.

 

● 표준 스트림


그런데, printf, scanf 를 사용할 때, 우리는 스트림에 대한 코드를 따로 지정해 주지 않았다.

그 이유는 이 함수들은, 입력 스트림과 출력 스트림이 프로그램이 돌아갈 때 알아서 생성되고 소멸하기 때문이다.

하지만, fgets 와 같은 함수를 사용한다면, 상황이 달라진다. 우리가 어떠한 종류의 스트림을 사용 할 지 따로 지정해 주어야 한다.

그렇다면 표준 스트림의 종류에 대해서 간단하게, 3가지만 알아보고 마치도록 하자.

 

stdin - <표준 입력 스트림> 키보드 대상 입력

stdout - <표준 출력 스트림> 모니터 대상 출력 

stderr - <표준 에러 스트림 > 모니터 대상 출력

댓글