当我打印某些行时,如果要覆盖例如第一个字符,则使用\r
,因为它是回车符,但在此字符之后仅打印一个字符,因此我的整个行都被覆盖。 / p>
这是我为这个问题编写的一些代码。
#include <stdio.h>
int main(){
printf("-------");
printf("\r ");
return 0;
}
使用此代码,我的输出是:,带有一个空格。
现在,我更改一些代码。唯一的变化是在第二个printf
后我删除了\r
#include <stdio.h>
int main(){
printf("-------");
printf("\r");
return 0;
}
使用第二个代码,我的输出是"-------"
(不带引号)
我的预期输出:" ------"
为什么这不起作用?
答案 0 :(得分:9)
\r
是回车。它将“支架”(现代的游标)发送回同一行的开头。它本身不会擦除任何内容,只是移动光标。显然,您的终端的行为是在行的开头打印字符会删除其余的行。我想这不能保证。
在许多系统上,如果要清除当前行,则必须打印\r
,后跟空格,直到该行上有字符为止。