강좌 & 팁
글 수 2,412
2015.12.24 19:15:52 (*.39.166.169)
49942
for(i=0;i<sec;i++)
{
sleep(1);
printf("*");
}
printf("\n");
위 코드를 돌리면 어떻게 될까?
어의 없게도 sec 로 들어온 시간 만큼 대기 했다가 한번에 * 을 출력 한다.
바로 캐리지 리턴이 없어서 printf 가 찍기전에 캐싱을 하기 때문이다.
해결 하는 방법은
for(i=0;i<sec;i++)
{
sleep(1);
//printf("%d\n",i);
printf("*");
fflush(stdout);
}
printf("\n");
이렇게 fflush(stdout); 해 주면 된다
fflush 는 스트림을 비워주는 함수이고, stdout 은 스트림을 비우고 그 값을 내보낼 경로가 된다.
그래서 바로바로 콘솔로 찍히게 된다.