我有以下代码:
#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中的当前计时器进行更新变量?
答案 0 :(得分:2)
改变这个:
printf("%d:%d\n", diff.wSecond, diff.wMilliseconds);
对此:
printf("%d:%d\r", diff.wSecond, diff.wMilliseconds);
请注意,您可能会在该行的末尾处有一些“遗留物”来处理。
您可以在\r
之前添加足够数量的空白字符来解决此问题。