2012-11-14 13 views
6

Powiel możliwe:
Why does printf not flush after the call unless a newline is in the format string?jak spać w C

Kiedy uruchamiam coś

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

następnie co by się spodziewać to jedna kropka na sekundę dziesięciokrotnie . Otrzymuję dziesięć kropek raz po dziesięciu sekundach. Dlaczego tak jest i jak mogę uzyskać, aby program drukował jeden punkt (lub robił inne rzeczy) w każdej sekundzie (lub innym przedziale czasu)?

+1

_how spać w C_? Spróbuj 'for (int i = 0; i Bitterblue

Odpowiedz

10

printf() jest buforowanie danych, można zmusić go do spłukiwania, że ​​dane z fflush(stdout):

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

thats co myślałem ... po prostu nie wiedziałem o fflush() dzięki :) – foaly

Powiązane problemy