C - "carriage return"返回不同的输出



我试图理解回车(\r(。所以我写了下面的代码。如果我运行下面的代码,我得到的输出是"go"。

方法1:

#include <stdio.h>
int main()
{
printf("chircargo");
return 0;
}

但是,如果我尝试使用"",那么我将获得输出"goi"。

方法2:

#include <stdio.h>
int main()
{
printf("chircargon");
return 0;
}

这有什么错误?
谁能帮我?

在这两种情况下,您都应该得到"goi"。您可以在此处进行测试。

回车实际上就是这样 - 它返回回车,即它回到行的开头。

因此,当您打印"chi\rca\rgo"时,输出将发生这种情况:

==============================
| 1. | print "chi"     | chi |
==============================
| 2. | carriage return | chi |
==============================
| 3. | print "ca"      | cai |
==============================
| 4. | carriage return | cai |
==============================
| 5. | print "go"      | goi |
==============================

在输出末尾添加n不会更改该行为。但是,端子通常是行缓冲的,这意味着换行符的行为类似于刷新。可能是在第一种情况下您只看到"go",因为如果没有换行符,终端还没有打印该行的所有字符。

相关内容

最新更新