对C标准输出的更多控制

对C标准输出的更多控制,c,controls,C,Controls,我似乎找不到正确的方法去问全能的谷歌 在诸如命令行进度条之类的程序中,输出缓冲区似乎是直接操纵的。它不能在任何想要的地方将字符打印到终端上。在标准C中,对程序输出的这种控制是如何控制的?有什么特别的图书馆我可以查吗?看看诅咒 它是unix/linux的一个lib如果你只需要一个进度条,你可以每完成2%就打印一个“X”。这应该在一行中填充50个字符 如果您想要更新奇的东西,可以在Linux上尝试经典的“curses”库,或者如果您只想要一个对话框,可以尝试Debian安装实用程序使用的库,但是我忘

我似乎找不到正确的方法去问全能的谷歌

在诸如命令行进度条之类的程序中,输出缓冲区似乎是直接操纵的。它不能在任何想要的地方将字符打印到终端上。在标准C中,对程序输出的这种控制是如何控制的?有什么特别的图书馆我可以查吗?

看看诅咒
它是unix/linux的一个lib

如果你只需要一个进度条,你可以每完成2%就打印一个“X”。这应该在一行中填充50个字符


如果您想要更新奇的东西,可以在Linux上尝试经典的“curses”库,或者如果您只想要一个对话框,可以尝试Debian安装实用程序使用的库,但是我忘记了它的名字。

它不是标准C的一部分。这些东西是通过编写一些特殊的字符序列来工作的,这些字符序列由终端模拟器识别,终端模拟器负责光标的定位和其他工作。

您可以通过检查来完成进度条


要做更高级的东西,你可以使用

这里的大猩猩是ncurses库,但是你可以用更少的学习曲线做很多很酷的东西。尝试使用
\r
移动到行首,使用简单的控制序列清除行尾,打开和关闭粗体,等等。
tput(1)
命令非常有用。例如,我编写了一个简单的应用程序,用于突出显示文本,为了打开和关闭突出显示,我只调用了命令
tputsmso
tputrmso
。您可以使用C和
popen(3)
捕获结果;使用shell更容易。

您可以使用它来控制终端输出。这就是很多泥地游戏的输出方式。

我更多地使用进度条作为示例,因为wget等人的进度条非常奇特。我希望能够基本上打印字符,无论我想在哪里。因此,考虑流氓游戏。一个诅咒风格的库是这些游戏在终端中创建环境的方式吗?是的。。。我用它来写俄罗斯方块。可以假设这些转义序列在任何*nix终端上都能工作吗?我只是在玩弄这些东西,所以我可能通过ssh在学校的服务器上工作,或者我可能在自己的Linux机器上工作。无论哪种情况,我都希望结果是一致的……是的,标准SSH/终端shell处理这些命令。您可以通过输出“\e[1;31mHello”(gcc)在您的*nix术语上打印一个红色Hello来进行快速测试。