谁能告诉我如何得到以下代码的输出:hai ?
int main()
{
printf("\nab");
printf("\bsi");
printf("\rha");
return 0;
}
他们按他们应该的方式工作!!
\n
=> 换行,垂直转到同一列中的下一个位置
\b
=> BackSpace,向后转到一个位置
\r
=> 回车,与键盘中的 Home 键相同
详细解释:
\r
:
将光标移动到同一行中的 Home 位置。
\b
:
如果不在 Home 位置,则在同一行上将光标向后移动一位。
\n
:
编辑(interjay 建议):根据 C 标准,无论平台如何,都应将光标移动到下一行的 Home 位置。
First 之后的输出printf
:
ab
秒后输出printf
:
asi
第三次之后的输出printf
:
hai
这很明显。
该程序以打印\nab开始。这里,\n表示,转到下一行。因此,光标将转到下一行并显示其余字符,如下所示:
抗体
然后,程序打印\bsi。在这里,\b表示,返回一个字符并打印其余字符。所以输出变成:
阿西
现在,最后,程序打印\rha。在这里,\r表示,返回到行首并打印其余字符。因此,输出变为:
海
对我来说不是!
在我的带有(-std=c11) 的Mac上,控制台上的输出是:c11
(emtpy line)
asi
ha