들어가면서
질문 게시판에 올라오는 C/C++ 코드 중 종종 fflush(stdin)
또는 rewind(stdin)
을 사용한 코드들이 올라옵니다.
결론부터 말하자면, 이런 문장을 쓰는 프로그램은 호환성이 없으며, 구현체가 달라지면 전혀 다른 행동을 할 수 있습니다.
위 두 문장은 Windows 운영체계에서 Microsoft Visual C++ (이후 MSVC)로 컴파일한 프로그램을 실행하고, stdin 이 키보드인 경우에만 원하는 동작을 하고, BOJ 의 채점 환경인 Linux 운영체계에서 GCC 또는 clang 로 컴파일한 프로그램을 실행하고, stdin 이 파일인 경우에는 전혀 다른 동작을 합니다. 이 두 함수의 원래 의미를 설명하는 것으로 글을 시작하겠습니다.