C语言 为什么以及如何显示以下涉及回车的输出


#include <stdio.h>
void main()
{
    printf("ab");
    printf("bsi");
    printf("rha");
}

此代码在 GCC 4.8 编译器上给出"ha"的输出

#include <stdio.h>
void main()
{
    printf("ab");
    printf("bsi");
    printf("rha");
    printf("n");
}

此代码在 GCC 4.8 编译器上给出 "hai" 的输出

现在的问题是,为什么输出从"ha"更改为"hai"只是在添加语句printf(""(时;最后(根据我的说法(由于前面的行而不会影响代码。

当程序结束时,shell 会从光标上次所在的任何位置开始写入提示。所以在第一种情况下,rha之后,光标位于i上。shell 将使用提示的第一个字符覆盖i

在第二种情况下,在末尾输出一个n,将光标移动到下一行,shell 将在其中写入其提示。

首先,您需要了解空格字符:

  1. :: 将光标移动到下一行。
  2. \b :: 它将光标移回控制台左侧一个字符。只是简单的退格一个字符。
  3. \r :: Carrage Returns.It 将光标移动到同一行的最右侧。

所以 printf 语句的结果是::1.打印"ab",光标位于行尾。2. 将光标向后移动一个空格 (\b( 后打印"asi",光标位于行尾。3.打印"hai",光标位于ha之后,就在i下方。

所以,输出 :: hai

在第一种情况下,由于

光标,您无法看到"i",而在第二种情况下,由于换行符,您可以看到它

如果你编译第一个代码,在 i 的位置,有光标,所以你看不到 i。在第二个代码中,光标位于新行中,并且不覆盖任何字符。

最新更新