'之间有什么关系 ' 和 ' ' 在 printf 中?

问题描述 投票:0回答:2
#include<stdio.h>
int main()
{
printf ("Hello\r");
}

在 gcc 编译器中,执行此代码时不会打印任何内容。如果我将

\n
添加到 printf 语句中,例如

printf ("Hello\r\n");

它打印

Hello
。为什么它会这样?输出缓冲区发生了什么?

c printf
2个回答
4
投票

\r
是回车符,而
\n
字符是换行符。

A 回车 将光标移回行首。这个术语可以追溯到打字机,其中固定滚筒和纸张的托架一直移动到右侧。结果是,从行首开始,任何后续字符都会打印在任何先前字符上。

A 换行 将光标向下移动一行。这个术语也可以追溯到打字机,其中滚筒被转动以向下移动一行。

这些字符的解释方式因操作系统或终端仿真器而异。在您的情况下发生的情况是打印“Hello”,打印

\r
字符,将光标移回到同一行的开头,然后程序退出,shell 在“Hello”上打印其提示。

如果您要打印的字符串比 shell 的提示符长,那么您将看到附加字符。例如,如果我将

printf
调用更改为:

printf ("Helloxxxxxxxxxxyyyyy111112222333344445555\r");

当我运行你的程序时,我得到这个:

[dbush@db-centos7 ~]$ ./x1
[dbush@db-centos7 ~]$ 1112222333344445555

相反,当您打印

\n
时,光标会移至下一行 并且 会移至该行的开头。


0
投票

' ':打印时遇到,指示系统移至下一行,从该行行首开始打印。

' ':在打印过程中遇到时,指示系统返回到当前行的开头,而不移至下一行。这对于覆盖或替换同一行中的文本很有用。

© www.soinside.com 2019 - 2024. All rights reserved.