C 언어 기능에 관해 제가 원하는 결과는 eeee가 3초 동안 화면에 머물렀다가 실행될 때 왜 아무것도 없는 것입니까?
이유: printf() 함수는 라인 버퍼링된 출력입니다.
Printf()는 매개변수를 화면에 직접 전송하지 않고 매개변수를 출력 버퍼에 출력합니다. 출력 버퍼는 일반적인 크기가 4096바이트인 메모리 영역으로, 4096자를 저장할 수 있습니다.
다음 상황 중 하나가 발생하면 출력 버퍼의 내용이 표준 출력(예: 모니터)으로 전송되며 이를 버퍼 새로 고침이라고 합니다.
1 . 줄바꿈 문자에 도달한 경우
3. 프로그램이 종료될 때
5. 출력 버퍼를 강제로 새로 고치는 fflush(stdout) 함수를 호출할 때.
화면 지우기 함수 clrscr()의 구체적인 구현은 알려지지 않았지만 출력 버퍼가 새로 고쳐지고 이어서 화면의 내용이 지워지게 됩니다.
위 내용이 이해되지 않으면 printf("eeee");를 다음 형식으로 바꿔서 실행할 수 있습니다.
1. 끝에 개행 문자를 추가하세요.
printf("eeee\n");
2. fflush(stdout)를 호출합니다. 위와 차이점은 래핑되지 않는다는 것입니다.
printf("eeee");
fflush(stdout);
3. 중간에 개행 문자를 삽입합니다:
printf("ee\nee" );
4. 중간에 개행 문자를 삽입하고 fflush()를 호출합니다.
printf("e\neee");
fflush(stdout );