2014-10-22 52 views
0

我試圖做一個基本的倒數計時器用下面的代碼試圖讓一個倒數計時器在C

#include <stdio.h> 
#include <unistd.h> 

int main(int argc, char *argv[]) 
{ 
    printf("Enter time in minutes:"); 
    int x = 0; 
    scanf("%d", &x); 
    x = x*60; 
    while(x!=0) { 
     printf("Remaining time is %d\r", x); 
     x--; 
     sleep(1); 
    } 
    return 0; 
} 

然而,當我運行X = 1中的代碼時沒有輸出,我沒有得到任何立即輸出。有沒有什麼辦法解決這一問題?

回答

3

標準輸出線通過默認緩衝。如果是

printf("Remaining time is %d\n", x); 

注意\n這裏,它將輸出每次\n時間看到。

然而,在你的情況,您使用的目的回車\r。另一種方法是像這樣手動刷新標準:

printf("Remaining time is %d\r", x); 
fflush(stdout); 
+0

工作就像一個魅力。你能解釋我錯過了什麼嗎? – waivek 2014-10-22 10:33:37

+1

@waivek添加了一些解釋。 – 2014-10-22 10:39:19

+1

'Printf'默認不輸出它的輸出,也就是寫入內部緩衝區,當滿或在行結束時,該緩衝區被打印到屏幕上。你的問題是你沒有填充緩衝區或輸出''\ n'',所以輸出沒有被推到屏幕上。 'fflush(stdout)'強制每次寫入緩衝區。編輯:太慢... – Baldrickk 2014-10-22 10:39:54