[완료] printf가 재때 재때 출력을 해주지 않네요 출력이 지연됩니다
글쓴이: avanwz / 작성시간: 일, 2012/07/29 - 4:17오전
지금 간단한 계산 프로그램을 만드는데 계산하나하나가 시간이 오래걸리는 것이라 그냥보면 답답해서
현재 진행상황을 알려주기위한 기능을 넣으려고 합니다.
방법은 총계산해야하는 양에서 현재 계산이 진행된양을 나눠서 몇프로 진행되었는지 구하고 출력해주게 했거든요.
%계산이 끝나면 printf로 현재 몇% 진행중입니다를 출력하게끔 했습니다.
그런데 분명히 실시간으로 %가 출력이 되야하는데 계산이 끝나면 주르륵 1-100까지 한번에 출력이 되어서 난감하네요
프로그램 구조는
main()
{
a(입력값);
}
a()
{
loop( 연산횟수 )
{
계산
현재 진행 % 계산
if( %가 증가하면 )
{
printf( 현재 x% 진행 );
}
}
}
대충 이렇습니다.
구문오류 논리오류는 없습니다.
신기한점은 if문을 빼버리면 실시간으로 주루룩 출력해줍니다.
하지만 그렇게되면 loop의 연산횟수만큼 %가 출력되어서 숫자가 화면을 뒤덥게 됩니다...
그래서 if구문을 넣어서 증가할때만 출력해주게 하였는데 실시간으로 출력이 되는것이 아니라 loop가 끝나면 주루룩 1에서 100까지가 출력이되는 신기한 현상이 일어납니다.
왜 이럴까요?
Forums:
printf가 내부적으로 버퍼링을 하기 때문에
printf가 내부적으로 버퍼링을 하기 때문에 그렇구요,
printf 하고서 매번 fflush(stdout)해 주면 바로 화면으로 출력이 될껍니다.
man fflush해 보세요.
고마워요
답변 정말 고맙습니다. 버퍼가 있을줄은 생각하지 못했네요. 많이 배워갑니다.
댓글 달기