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