2012-11-14 41 views
6

thể trùng lặp:
Why does printf not flush after the call unless a newline is in the format string?làm thế nào để ngủ trong c

Khi tôi chạy một cái gì đó giống như

for (i = 1; i <= 10; i++) { 
    sleep(1); 
    printf("."); 
} 

sau đó những gì tôi mong đợi là một dấu chấm mỗi giây mười lần . Những gì tôi nhận được là mười chấm một lần sau mười giây. Tại sao là như vậy, và làm thế nào để tôi có được chương trình để thực sự in một điểm (hoặc làm những thứ khác) mỗi giây (hoặc khoảng thời gian khác nhau)?

+1

_how ngủ trong c_? Hãy thử 'for (int i = 0; i Bitterblue

Trả lời

10

Các printf() được đệm dữ liệu, bạn có thể buộc nó để tuôn ra dữ liệu với fflush(stdout):

for (i = 1; i<=10; i++) 
{ 
    sleep(1); 
    printf("."); 
    fflush(stdout); 
} 
+0

thats những gì tôi nghĩ ... chỉ không biết về fflush() cảm ơn :) – foaly

Các vấn đề liên quan