我正在尝试创建一个模拟时钟的c ++程序。它应该显示日期/时间并不断更新。我找到了一种使所有功能都能完美运行的方法,但是我想了解代码。我对编程非常陌生,理想情况下希望对每一行都有了解。

我知道这行代码为将光标移回屏幕上的指定点奠定了基础-在我的程序中,它用于返回到先前显示的“开始”和“重叠”。

void gotoxy (int x, int y)
{
    COORD coord; // coordinates
    coord.X = x; coord.Y = y; // X and Y coordinates
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}


有人可以向我解释坐标吗?我不明白大括号背后的原因。

在main()中,我有以下代码:

time_t now;
    while (true)
    {
        gotoxy (0,0);
        now = time(0);
        cout << "The time is now: " << ctime(&now);
        Sleep (20);
    }
    cin.get ();
    return EXIT_SUCCESS;


我以为time_t是C / C ++的函数,它显示自1970年1月1日以来经过的时间。我不明白这是如何输出当前时间的。

我试图注释掉一些代码,以查看出了什么问题,以便弄清楚整个过程是如何工作的,但是没有运气。我还在互联网上搜索了几个小时,逐行走,以查看是否可以对此有所了解。我已经采取了最后的手段,只是要求任何人帮助我理解这段代码中发生了什么。谢谢!

最佳答案

坐标只是终端中字符的位置。 (0,0)可能意味着返回第一个字符。这样做时,输出将覆盖控制台中的字符,给它“更新”时间的错觉。

至于时间功能,您可以阅读ctime here的文档。它返回人类可读的日期格式,而不是计数器。

代码的哪一部分不清楚?

这是一个简单的无限循环(cin.get ();永远不会到达,程序永远不会返回btw)。在循环内,光标返回到行的开头,打印时间并等待20秒重复。

10-02 04:51
查看更多