티스토리 뷰

DEV/C 언어

[스크랩]fflush(stdin)

초록매실원액 2015. 12. 28. 12:17

원문


fflush 스트림에 할당된 버퍼를 비우는 명령입니다.

버퍼를 비운다는 의미가 입력버퍼냐, 출력버퍼냐에 따라

다른데요, 질문 내용에 포함된 처럼 입력 버퍼를 비우는 것은

해당 내용을 완전히 삭제하고 새로운 입력을 받을 준비를 하는 것을

말하고, 출력 버퍼를 비운다는 것은, 버퍼의 내용을 해당 출력 스트림으로

완전히 출력시키는 것을 의미합니다.

함수의 원형은 stdio.h 선언돼 있고,

int fflush(FILE *);

같으며, 인수로 파일스트림을 취하고 있으므로

stdin 아니라 stdout 또는 FILE *fp; 등과 같이

선언한 파일포인터도 인수로 있습니다.

stdout 인수로 경우, 출력버퍼의 내용을 표준출력장치(일반적으로

모니터) 지금 당장 모두 출력하라는 내용이 됩니다.

예를 들어, printf("Now converting...");

같은 문구를 출력한 시간이 오래 걸리는 작업을 한다고

가정합시다. 그러면 실제로는 오래 걸리는 작업이 수행된 다음에

화면에 문구가 출력되기 때문에 안내문으로서의 기능을 완전히

상실하게 되는데, 사용할 있는 것이 바로 출력 버퍼

비우기가 되겠습니다. 원래 스트림 출력은 버퍼링을 통해

한가할 한꺼번에 모아서 출력을 하게 되는데, 위와 같은

시나리오에서는 오히려 불편을 초래하게 되는 것이지요.

 

printf("Now converting...");

fflush(stdout);

convert();

 

등과 같이 코딩하면, convert(); 함수가 수행되기

전에 Now converting... 라는 문구가 화면에 출력되는 것을

보장해 줍니다.

파일스트림의 경우에도 지금 당장 파일에 값을 쓰는 것을

보장하고 싶을

fflush(fp); 등과 같은 형태로 호출할 있겠지요.

'DEV > C 언어' 카테고리의 다른 글

Scanf()  (0) 2015.12.28
Printf()  (0) 2015.12.28
함수(Function)  (0) 2015.12.28
변수 및 연산자  (0) 2015.12.24
What is C-Language  (0) 2015.12.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함