티스토리 뷰
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
- 인텔리 제이
- 펄
- 조회
- 오라클
- 베네수엘라
- 여행
- 데스트톱
- Oracle
- 해외
- 쿠폰
- 삼슉이
- 유휴시간
- 직링
- Java
- 직구
- 시즌2
- 신혼
- phython
- 지니어스
- 개발폰트
- 할인
- 배민문방구
- 오피스
- 배민
- 수리영역
- 배달의민족
- 무료
- 정답
- 바다
- font
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |