Publié le

fflush 예제

다음 예제에서는 printf() 호출을 사용하여 사용자가 표준 입력에서 입력해야 하는 정보에 대한 일련의 프롬프트를 인쇄합니다. fflush() 호출은 출력을 표준 출력으로 강제합니다. fflush() 기능은 표준 출력이 일반적으로 버퍼링되고 프롬프트가 출력 또는 터미널에 즉시 인쇄되지 않을 수 있기 때문에 사용됩니다. gets() 호출은 표준 입력에서 문자열을 읽고 프로그램의 나중에 사용할 수 있는 변수에 결과를 배치합니다. 여기서는 구문과 함께 C 언어로 라이브러리 헤더 stdio.h의 fflush() 함수에 대해 알아봅니다. Souvik Saha가 제출, 1 월 06, 2019 우리가 컴파일하고 다음과 같은 결과를 생성할 위의 프로그램을 실행하자. 여기 프로그램은 fflush()에 대한 첫 번째 호출에 직면할 때까지 출력을 버퍼링으로 유지한 다음 다시 출력 버퍼링을 시작하고 마침내 5초 동안 절전 모드로 전환합니다. 프로그램이 나오기 전에 남은 출력을 STDOUT에 보냅니다. 이 함수는 성공에 0 값을 반환합니다. 오류가 발생하면 EOF가 반환되고 오류 표시기(예: feof)가 설정됩니다. 홈 » C 프로그램 » stdio.h 헤더 파일 기능 [EFBIG] 오류는 큰 파일 지원 확장자의 일부로 추가됩니다.

여기서 버퍼는 데이터를 로드/가리키는 임시 변수 또는 포인터입니다. fflush() 함수는 파일 또는 버퍼를 플러시하는 데 사용됩니다. 즉, 이미 다른 데이터로 로드된 경우 정리(비어 있음). 참조: https://stackoverflow.com/questions/2979209/using-fflushstdin 잘못된 내용을 찾거나 위에서 설명한 주제에 대한 자세한 정보를 공유하려면 의견을 작성하십시오. 우리는 stdin같은 입력 스트림을 위해 그것을 사용할 수 있습니까? C 표준에 따라 fflush(stdin)를 사용하는 것은 정의되지 않은 동작입니다. 그러나 마이크로 소프트 비주얼 스튜디오와 같은 일부 컴파일러는 그것을 허용 할 수 있습니다. 이러한 컴파일러에서 어떻게 사용됩니다. 공백이 있는 입력 문자열을 사용하는 동안 버퍼는 다음 입력에 대해 지워지지 않으며 이전 입력을 동일하게 고려합니다.

이 문제를 해결하기 위해 fflush (stdin)입니다. 스트림/버퍼를 지우는 데 사용됩니다. 위의 코드는 단일 입력만 을 취하며 두 번째 입력에 대해 동일한 결과를 제공합니다. 이유는 문자열이 이미 버퍼에 저장되어 있기 때문에 즉 스트림이 공백이나 새 줄이있는 문자열을 예상했기 때문에 아직 지워지지 않았기 때문입니다. 그래서,이 상황을 처리하기 위해 fflush (stdin)가 사용됩니다. 스트림이 null 포인터인 경우 fflush()는 위에서 동작이 정의된 모든 스트림에서 이 플러시 작업을 수행해야 합니다. fflush() 함수를 사용하지 않는 경우 여기에서 그런 다음 출력이 될 것입니다 … “scanf()” 문 후에 “fflush(stdin)”를 사용하면 특정 컴파일러에서 입력 버퍼도 지워지지만 언어 표준에 의해 정의되지 않은 동작이기 때문에 사용하지 않는 것이 좋습니다. C 및 C ++에서는 이 게시물에서 설명한 버퍼를 지우는 여러 가지 방법이 있습니다. fflush()는 일반적으로 출력 스트림에만 사용됩니다. 그 목적은 출력 버퍼를 지우거나 플러시하고 버퍼링 된 데이터를 콘솔 (stdout의 경우) 또는 디스크 (파일 출력 스트림의 경우)로 이동하는 것입니다.