在Windows控制台中更新单行

时间:2014-07-28 07:26:15

标签: c printf

我有以下代码:

#include <windows.h>
#include <stdio.h>

void main()
{
    SYSTEMTIME st1, st2, diff;

    GetSystemTime(&st1);


    while (1)
    {
        Sleep(1);
        GetSystemTime(&st2);
        diff.wSecond = st2.wSecond - st1.wSecond;
        if (st2.wMilliseconds > st1.wMilliseconds) { diff.wMilliseconds = st2.wMilliseconds - st1.wMilliseconds; }
        else { diff.wMilliseconds = 1000 + st2.wMilliseconds - st1.wMilliseconds; diff.wSecond--; }

        printf("%d:%d\n", diff.wSecond, diff.wMilliseconds);
    }

}

问题是当我在Windows命令提示符下执行此代码时,它会在每次循环转换时创建一个新行...创建一行显示的最简单方法是使用{{1中的当前计时器进行更新变量?

1 个答案:

答案 0 :(得分:2)

改变这个:

printf("%d:%d\n", diff.wSecond, diff.wMilliseconds);

对此:

printf("%d:%d\r", diff.wSecond, diff.wMilliseconds);

请注意,您可能会在该行的末尾处有一些“遗留物”来处理。

您可以在\r之前添加足够数量的空白字符来解决此问题。