2

我想制作一个更动态的界面,而不是每次都打印出一个全新的页面,但不知道如何实现它。例如,如果我们有一个从 0% 到 100% 的下载栏,我想直接在终端上更改数字,而不是打印出 100 行 1%、2%、3%。我该怎么办?

4

3 回答 3

0

您可以打印一个\r称为“回车”的字符,并且在大多数情况下应该将光标返回到行首,以便您可以打印已经存在的文本。我说应该是因为它不能保证,它取决于程序运行的外壳。如果你想做更多奇特的东西,你应该研究ncurses

于 2013-04-17T17:13:28.747 回答
0

您应该使用跨平台终端访问库,例如libncurses

于 2013-04-17T17:14:04.857 回答
0

更简单的选择是使用\r. 打印\r会将光标移动到行首,使您能够打印悬停旧字符。

一个解决方案看起来像

for (i = 0; i < 100; ++i)
{
    printf("\r%3i%%", i);
    fflush(stdout);
    /* ... */
}

如果您需要对终端进行更高级的控制,可以使用termcaps

于 2013-04-17T17:14:25.260 回答