\ r,\ n,\ b如何在此程序中运行

时间:2013-10-14 10:20:20

标签: c gcc escaping

有谁能告诉我如何获得以下代码的输出:hai

   int main()
   {
   printf("\nab");
   printf("\bsi");
   printf("\rha");
   return 0;
   }

3 个答案:

答案 0 :(得分:6)

他们按照自己的意愿工作!!

\n =>换行,转到同一列中的垂直下一个位置
\b => BackSpace,向后转到一个位置
\r =>回车,与键盘中的主键相同

精心解释:

\r

将光标移动到同一行的Home位置。

\b

如果不在原位,将光标向后移动一个位置。

\n

编辑(由interjay建议):根据C标准,无论平台如何,都应将光标移动到下一行的Home位置。

首先printf之后的输出:

ab

第二个printf之后的输出:

asi

第三次printf之后的输出:

hai

答案 1 :(得分:1)

很明显。

程序以打印 \ nab 开始。在这里, \ n 表示转到下一行。因此,光标将转到下一行并显示其余字符,如:

<强> AB

然后,程序打印 \ bsi 。在这里, \ b 表示返回一个字符并打印其余字符。所以出局了:

<强> ASI

现在,最后,该程序打印 \ rha 。在这里, \ r 表示,返回到行的开头并打印其余字符。因此,输出变为:

<强>海

答案 2 :(得分:1)

对我来说没有!

在我的 mac c11( - std = c11),控制台上的输出是:

(emtpy line)
asi
ha