fflush 함수

int fflush ( FILE *fp); 파일 스트림 버퍼를 비우는 함수

입력 매개 변수 리스트

fp 파일 스트림

반환 값

성공 시 0, 에러 시 EOF

 

출력 스트림 버퍼에 남아있는 내용을 출력 스트림에 출력하는 동작을 수행합니다. 하지만 입력 스트림에서 어떻게 동작해야 하는지는 표준 문서에서 정의하지 않았습니다.

scanf 함수처럼 포멧에 맞게 입력을 받을 때 최종 사용자의 입력 내용이 포멧 문자열보다 더 많은 내용을 포함하고 있으면 버퍼에 처리하지 않은 데이커가 남습니다. 이처럼 스트림 버퍼의 내용을 비울 때 fflush 함수를 사용합니다. 하지만 C 표준 문서를 보면 구체적인 행위를 정의하지 않았습니다.

실제 컴파일러에 따라 처리하는 방식이 다릅니다. 저자가 테스트 해 본 Microsoft Visual Studio 2010에서는 제대로 버퍼를 비우지만 Microsoft Visual Studio 2015에서는 아무런 작업도 하지 않음을 확인하였습니다. gcc나 tc 등도 버전에 따라 다르게 동작합니다.

이에 관한 다른 의견이 계시면 방문자 놀이터에 글이나  jejutour@daum.net 으로 메일을 보내주세요.

 

사용 예

출력(Microsoft Visual Studio 2010 이하 버전)

출력(Microsoft Visual Studio 2015)

이처럼 입력 스트림을 입력 인자로 fflush 함수를 사용할 때는 매우 신중하게 사용하셔야 합니다.