티스토리 뷰
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
- restapi
- 클린코드
- springai
- 개발생산성
- n8n
- 웹개발
- SEO최적화
- 자바개발
- 마이크로서비스
- 프롬프트엔지니어링
- 개발가이드
- 인공지능
- 웹보안
- 백엔드개발
- Java
- 데이터베이스
- AI기술
- 생성형AI
- AI
- 클라우드컴퓨팅
- 프론트엔드개발
- LLM
- 업무자동화
- 로드밸런싱
- 성능최적화
- 미래ai
- 개발자가이드
- 개발자성장
- 배민
- AI반도체
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |