C 需要了解\n、\b和\r将如何呈现printf输出的帮助吗

C 需要了解\n、\b和\r将如何呈现printf输出的帮助吗,c,language-lawyer,C,Language Lawyer,我用C语言编写了下面的程序,当我运行它时,我惊讶地看到了输出 这是节目单 int main() { printf("\nab"); printf("\bsi"); printf("\rha"); } 输出为:-hai 而我期待的是“absiha”,因为\n代表新行,\b代表退格(非擦除),而\r代表回车。所以我希望curson会是“I”字符,因为已经应用了\r,但是当我运行它并看到输出时,我完全感到惊讶和困惑。有人能给我解释一下

我用C语言编写了下面的程序,当我运行它时,我惊讶地看到了输出

这是节目单

int main()
{    
       printf("\nab");
       printf("\bsi");    
       printf("\rha");    
}
输出为:-hai
而我期待的是“absiha”,因为\n代表新行,\b代表退格(非擦除),而\r代表回车。所以我希望curson会是“I”字符,因为已经应用了\r,但是当我运行它并看到输出时,我完全感到惊讶和困惑。有人能给我解释一下输出吗

让我们一步一步来:

absiha

首先,处理退格。请注意,即使是“非擦除”,要输出的下一个字符也会覆盖退格的内容:

asiha

现在,回车意味着返回到行的开头。因此,“ha”覆盖了“asi:

hai

现在,光标当前位于
i
,因此要输出的下一个字符将覆盖
i

访问

转义序列字符
\铃声(扬声器发出嘟嘟声)
\b退格(非擦除)
\f表格输入/清除屏幕
\新线
\回车
\t形标签
\垂直标签
\\反斜杠
\?问号
\“单引号
\“双引号
\十六进制字符码
\onn八进制字符码nn

\nn八进制字符代码nn

您的意思是退格会将光标移动一个位置?就像insert语句一样?@ankur.trapasiya我猜这就是你所说的“非擦除”的意思,但我以前在其他上下文中见过它——比如,如果我在一个长时间运行的程序中有终端输出,然后在键盘上点击backspace,光标会移过去,但字符本身会留在那里,直到新的输出放在上面。不知道你所说的“像插入语句”是什么意思。谢谢你的回答。也许你应该先阅读这个问题,它可能是操作系统特有的。