我决定用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++相关问答推荐

当main函数调用被重构时,C函数给出错误的结果

当打印字符串时,为什么在c中没有使用常量限定符时我会收到警告?

从组播组地址了解收到的数据包长度

将整数的.csv文件解析为C语言中的二维数组

C是否用0填充多维数组的其余部分?

如何在不使用其他数组或字符串的情况下交换字符串中的两个单词?

向上强制转换C中的数值类型总是可逆的吗?

调用mProtection将堆栈上的内存设置为只读,直接导致程序SIGSEGV

Flose()在Docker容器中抛出段错误

Square不与Raylib一起移动

为 struct 中的数组动态分配内存时出错

试图创建一个基本的Word克隆,但遇到了障碍

如何在c中使用具有不同变量类型的内存分配?

用于计算位数和的递归C函数

C中2个数字的加法 - 简单的人类方法

WSASocket在哪里定义?

SSE 向量与 Epsilon 的比较

在 C 语言中,类型object_t在哪里定义?

从 COBOL 调用外部 C 库

如何使用jq判断c中的字符串是否是有效的json