我决定用 C 语言制作时钟作为我的第一个“项目”,在 60 秒标记后更改分钟进展顺利,但是当我需要在几分钟后更改小时数时,我的第二秒数不会重置,因此它会停留在数字 9 上,直到我转到 10 秒点。
#include<stdio.h>
#include<Windows.h>
int main ()
{
int h = 0,m = 59, s = 55;
int prekid = 1;
while (prekid == 1)
{
printf(" \r H:%d | M: %d | S: %d",h,m,s);
s++;
fflush(stdout);
if (s == 60)
{
m++;
s= 0;
}
if (m == 60)
{
m = 0;
s= 0;
h++;
}
sleep(1);
}
return 0;
}
最佳答案
问题原因:当行变短时,前一行较长的字符仍保留在屏幕上。
解决方案 1,在格式字符串末尾添加足够的空格(我认为在本例中为 3)以覆盖多余的数字:
printf(" \r H:%d | M: %d | S: %d ",h,m,s);
解决方案2,写入固定宽度输出,此处带有前导零:
printf(" \r H:%02d | M: %02d | S: %02d",h,m,s);
关于c - 为什么在我通过 1 小时标记后,你会卡住最后几秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74661780/