我决定使时钟在C作为我的第一个“项目”,改变分钟后60秒标记进行得很顺利,但当我需要改变小时后分钟我的secon秒数不会重置,所以它停留在数字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;
}
2条答案
按热度按时间rbpvctlc1#
问题原因:当行变短时,前一较长行中字符仍保留在屏幕上
解决方案1,在格式字符串的末尾添加足够的空格,在本例中我相信是3,以覆盖多余的数字:
解决方案2,写入固定宽度的输出,此处使用前导零:
tsm1rwdh2#
Rathe比打印一个可变宽度的文本(并留下左-造成OP的麻烦),打印一个固定宽度:
"%2d"
指示printf()
至少打印2个字符,并根据需要在左侧填充空格。