2012-01-27 76 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输出刷新本身。