프로그래밍/C | 2015. 4. 25. 02:54
표준 입 출력 함수를 사용하는 경우에는 버퍼라는 것을 제공받게 된다는 특징이 있다.
버퍼 = 여분의 임시 메모리 공간.
키보드를 통해서 입력하는 데이터는 실행중인 프로그램으로 바로 읽혀지는 것이 아니라, 일단은 입력 버퍼라는 곳에 저장이 된다는 것을 알 수 있다.
그리고 나서 입력 버퍼에 존재하는 데이터가 프로그램으로 이동하는 것이다.
프로그램상에서 printf와 같은 함수 호출을 통해서 모니터에 데이터를 출력하려는 경우에도 바로 출력이 이루어지는 것이 아니라, 일단 출력 버퍼라는 곳에 저장이 되었다가 출력 스트림을 통해서 모니터로 전송된다.
버퍼링(Bufferint)을 하는 이유는?
버퍼링이란 데이터를 전송하는데 있어서 목적지로 바로 보내는 것이 아니라, 중간에 버퍼(여분의 임시 저장소)를 둬서 전송하고자 하는 데이터를 임시 저장해 두는 것을 말한다.
임시 저장된 데이터가 어느정도 채워지면 한꺼번에 전송한다. -> 성능 향상을 위해서임.
fflush 함수 ?
버퍼를 비우는 작업을 하는 함수.
fflush 함수의 인자로 전달되는 스트림의 버퍼를 비워버린다.
stdin 과 같은 입력 스트림이 전달되면 입력 버퍼 안에 존재하는 데이터들은 모두 지워진다.
stdout과 같은 출력 스트림이 전달되면 출력 버퍼 안에 존재하는 데이터들은 즉시 출력된다.
[C언어] 데이터 영역(Data Area), 스택 영역(Stack Area), 힙 영역(Heap Area) (0) | 2015.04.25 |
---|---|
[C언어] strlen, strcpy, strncpy, strcat, strncat, strcmp, strncmp (0) | 2015.04.25 |
[C언어] puts,fputs, gets, fgets, (0) | 2015.04.25 |
[C언어] 포인터, const 키워드 (0) | 2015.04.23 |
[C언어] 문자열 상수, 포인터 배열 함수 (0) | 2015.04.23 |
[C언어] 재귀적 함수 호출, n!(Factorial 계산) (0) | 2015.04.22 |
[C언어] static 변수, register 변수 (0) | 2015.04.22 |
[C언어] printf, scanf, %e, %E (0) | 2015.04.22 |
[C언어] 리터럴(literal) 상수, 심볼릭(Symbolic) 상수 (0) | 2015.04.22 |
[C언어] sizeof 연산자, double형, unsigned (0) | 2015.04.22 |
Recent Comments