2012-01-27 25 views
3

我是新來的C語言編程,我希望有一個倒計時發生在同一行,例如,像這樣:重寫信息

Time left: n 

其中n將是那唯一的部分已更新的行。

我在說命令行編程。我知道如何做倒計數,我只需要幫助將它保持在一行,並動態更新該行。

+0

在純ANSI C中不可能 - 你在使用什麼操作系統 - 因爲你需要一些允許控制輸出位置的庫/擴展(例如你需要ncurses的unix/linux) – 2012-01-27 02:25:02

+0

@AdrianCornish:它更簡單比不得不使用詛咒。 – 2012-01-27 02:28:51

+0

@GregHewgill有趣的解決方案:-)可能適用於大多數實現。 – 2012-01-27 02:40:21

回答

6

您可以使用\r將光標返回到行的開頭並覆蓋該行。所以:

for (int i = 10; i > 0; i--) { 
    printf("\rCountdown: %d ", i); 
    fflush(stdout); 
    sleep(1); 
} 
printf(" done.\n"); 

fflush(stdout);是必要的,因爲在默認情況下,stdout只有當它的輸出緩衝區已滿,或\n輸出刷新本身。