printf("\033c") 是什么意思?

2024-02-22

我正在寻找一种在关闭程序后“重置”Unix 终端窗口的方法,并偶然发现printf("\033c" );效果很好,但我就是无法理解。我去了man console_codes由于我对 Unix c 编程有点缺乏经验,所以它不是很有帮助。

有人可以解释一下吗printf("\033c" );?


在 C 语言中,以零开头的数字是octal https://en.wikipedia.org/wiki/Octal数字。基数为 8 的数字。

它的作用是打印八进制数表示的字符33随后是一个'c'.

In ASCII 编码 http://en.cppreference.com/w/c/language/ascii八进制数33 is the ESC(转义)字符,它是终端控制序列的常见前缀。

有了搜索终端控制序列的知识,我们可以找到例如此VT100控制序列参考 https://web.archive.org/web/20190624214929/http://www.termsys.demon.co.uk/vtansi.htm (VT100 https://en.wikipedia.org/wiki/VT100是一个古老的“哑”终端,被大多数现代终端程序所模拟)。使用 VT100 参考我们发现<ESC>c在终端设置部分,它被记录为

重置设备<ESC>c

将所有终端设置重置为默认值。


The ESC字符也可以使用打印"\x1b"(仍然假设 ASCII 编码)。常量字符串文字中无法使用十进制数字,只能使用八进制和十六进制。

However(如所指出的chux 的评论 https://stackoverflow.com/questions/47503734/what-does-printf-033c-mean/47503782?noredirect=1#comment81963534_47503782) 序列"\x1bc" will not做同样的事情"\033c"。那是因为0x1bc是一个有效的十六进制数,编译器是greedy当它解析此类序列时。它将打印该值代表的字符0x1bc相反,我不知道它可能是什么(取决于我认为的区域设置和终端设置,可能会打印为 Unicode 字符)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

printf("\033c") 是什么意思? 的相关文章

随机推荐