-2

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

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

3 回答 3

6

他们按他们应该的方式工作!!

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

详细解释:

\r

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

\b

如果不在 Home 位置,则在同一行上将光标向后移动一位。

\n

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

First 之后的输出printf

ab

秒后输出printf

asi

第三次之后的输出printf

hai

于 2013-10-14T10:22:43.273 回答
1

这很明显。

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

抗体

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

阿西

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

于 2013-10-14T10:31:02.077 回答
1

对我来说不是!

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

(emtpy line)
asi
ha
于 2013-10-14T10:32:36.960 回答