■ 표준 입출력 함수를 사용하는 경우 버퍼라는 것을 제공받게 된다.


(1) 버퍼와 버퍼링

- 버퍼 : 여분의 임시 메모리 공간
- 입력버퍼 : 키보드로 데이터를 입력하고 나서 Enter 키를 누르는 시점에서 데이터가 입력 버퍼로 들어간다.
- 출력버퍼 : 표준출력 함수 호출을 통해 모니터에 출력하는 경우 데이터가 잠시 저장되었다가 출력 스트림을 통해 모니터로 전송된다.

○ 버퍼링
: 데이터를 전송 하는데 있어서 목적지로 바로 보내는 것이 아니라, 중간에 버퍼를 둬서 전송하고자 하는 데이터를 임시 저장해 두는 것을 말한다.

- 목적 : 성능의 향상
긴급을 요하는 입출력 작업이 아니라면, 문자가 하나씩 들어올 때마다 처리하는 것보다는 어느정도 쌓아 두었다가 처리하여 일의 효율을 높인다.


(2) 버퍼를 비우는 함수
: 긴급을 요하는 입출력 작업일 경우 성능 향상을 위한 버퍼링이 부담될 수 있다. 이러한 경우 fflush() 함수를 사용한다.

○ fflush 함수는 인자로 전달되는 스트림의 버퍼를 비우는 작업을 한다.

○ 함수원형

#include <stdio.h>

int fflush(FILE* stream);


- 스트림이 stdin인 경우 : 입력 버퍼 안에 존재하는 데이터들은 모두 버려진다.
- 스트림이 stdout인 경우 : 출력 버퍼 안에 존재하는 데이터들은 즉시 출력된다.


by 민트앤라떼 2012. 7. 1. 03:48