在C中使用\ b和\ r
\b
和\r
很less在实践中使用。 我刚刚发现我误解了这两个转义序列。 一个简单的testing:
printf("foo\bbar\n");
我期望它输出fobar
,因为\b
将退格光标, b
将覆盖第二个o
,而是输出: foobar
同样是\r
:
printf("foo\rbar\n");
我以为\r
会将光标移动到当前行的开头,所以bar
会replacefoo
,所以最终的输出应该是bar
。 但是,它实际上输出:
foo bar
这些字符将被发送到底层的输出设备(在你的情况下可能是一个terminal模拟器)。
这取决于terminal的实现,然后这些angular色如何实际显示。 例如,一个钟( \a
)可能会触发某些terminal上的哔声,或者其他terminal上的屏幕闪烁,或者会被完全忽略。 这完全取决于如何configurationterminal。
这些字符与文档中的完全相同 – \b
等同于0x08
的字符代码, \r
等同于0x0d
。 不同的是你的操作系统对这些angular色的反应。 当显示器试图模仿旧的电传打字机时,这些操作是标准化的,但在现代环境中它们不太有用,并且不能保证兼容性。
退格和回车符的解释留给您用于显示的软件。 terminal仿真程序在显示\ b时会将光标向后退一步,并在\ r开头显示\ r。 如果您在其他地方打印这些字符,如文本文件,软件可能会select。 做别的事情
我已经尝试了许多反斜杠转义字符。 \n
这是一个新的换行符可以放在任何地方带来的效果。 使用这个特性时要记住的一件重要事情是,我们正在使用的机器的操作系统可能会影响输出。 作为一个例子,我打印了一堆转义字符,并显示结果如下,以certificate操作系统将影响输出。