它始终显示“hello world”。为什么呢?
#include <stdio.h>
int main(void)
{
printf("..... world\rhello\n");
return 0;
}
答案 0 :(得分:10)
这是因为\r
是carriage return(CR)。它将插入符号返回到行的开头。然后你在那里写hello
,有效地覆盖了点。
\n
(换行,LF)用于将插入符号向下移动一行,这就是电传打字机具有CR-LF序列或回车符号的原因通过换行将插入符号放在下一行的开头。 Unix取消了这个,LF现在自己做了。然而,CR仍然存在其旧的语义。
答案 1 :(得分:4)
使用\r
,您将返回当前行的开头并覆盖“.....
”点:
printf("..... world\rhello\n");
^^^^^ vvvvv
hello <----- hello
工作原理:
..... world
^
然后返回当前行的开头:
..... world
^
然后在\r
之后打印一个单词。结果是:
hello world
^
答案 2 :(得分:2)
因为单独的\r
(carriage return)字符导致您的终端返回到行的开头,而不更改行。因此,\r
左侧的字符会被"hello"
覆盖。
答案 3 :(得分:0)
再次检查,它会发出像
..... world
hello
以及你在printf()内写的内容,它会将其作为输出
返回答案 4 :(得分:0)
#include<stdio.h>
#include<conio.h>
int main(void)
{
// You will hear Audible tone 3 times.
printf("The Audible Bell ---> \a\a\a\n");
// \b (backspace) Moves the active position to the
// previous position on the current line.
printf("The Backspace ---> ___ \b\b\b\b\b\b\b\b\b\bTesting\n");
//\n (new line) Moves the active position to the initial
// position of the next line.
printf("The newline ---> \n\n");
//\r (carriage return) Moves the active position to the
// initial position of the current line.
printf("The carriage return ---> \rTesting\rThis program is for testing\n");
// Moves the current position to a tab space position
printf("The horizontal tab ---> \tTesting\t\n");
getch();
return 0;
}
/***************************OUTPUT************************
The Audible Bell --->
The Backspace ---> Testing__
The newline --->
This program is for testing
The horizontal tab ---> Testing
***************************OUTPUT************************/