在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操作系统将影响输出。