2016-07-18 2 views
-1

이 코드 작업의 벌금 종료되지 않은 경우 값을 인쇄하지 않으면 서 '\ n'을 제거하면 아무 것도 인쇄되지 않습니까? 수면() 루프는 n

int main() 
{ 
while(1){ 

printf("hi"); 
sleep(1); 
} 

return 0; 
} 

출력

: NO OUTPUT 기본적으로 버퍼링 경우

Plz은 사람이 그래서 당신은 밖으로 \n을해야로 세척하거나 완전히 그 내부 버퍼를 채울 방법이 문제 :)

+2

확인이 : http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline -is-in-the-format-strin – babon

답변

1

stdout의 explaination를 제공합니다.하지 이러한 동작이 바람직하지 않은 경우 fflush(stdout)을 사용하여 수동으로 플러시하거나 setbuffer(stdout, NULL, 0)을 사용하여 버퍼링을 해제 할 수 있습니다.

0

인쇄물이 보이지 않는 이유는 출력이 버퍼링되어 있기 때문입니다.

접미사를 \ n 인쇄 할 때 나타나는 이유는 일부 시스템에서는 줄 바꿈으로 인해 버퍼가 플러시됩니다. 당신과 같이 수동으로 표준 출력을 세척 할 수 있습니다

int main() 
{ 
    while(1) 
    { 
     printf("hi"); 
     fflush(stdout); 
     sleep(1); 
    } 
return 0; 
}