2012-11-14 4 views
6

Mögliche Duplizieren schlafen:
Why does printf not flush after the call unless a newline is in the format string?wie in c

Wenn ich etwas laufen wie

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

dann, was ich erwarten würde ein Punkt pro Sekunde zehnmal . Was ich bekomme ist zehn Punkte einmal nach zehn Sekunden. Warum ist das so, und wie bekomme ich das Programm, um einen Punkt (oder andere Dinge) jede Sekunde (oder anderes Zeitintervall) tatsächlich zu drucken?

+1

_SO in c_ schlafen? Versuchen Sie 'for (int i = 0; i Bitterblue

Antwort

10

Die printf() wird Puffern der Daten, können Sie es erzwingen, dass die Daten mit fflush(stdout) zu spülen:

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

das ist, was ich dachte ... wusste nur nicht über fflush() danke :) – foaly