我有这样的C代码:
#include<stdio.h>
int main()
{
printf("Hey this is my first hello world \r");
return 0;
}
我已经用过\r
转义序列作为实验。
o world
这是为什么,有什么用\r
到底是什么?
如果我在一个在线运行相同的代码编译器得到的输出为:
Hey this is my first hello world
为什么在线编译器会产生不同的输出,忽略\r
?
答案
\r
是一个回车特点;
这光标是渲染下一个字符的位置。
所以,打印一个\r
允许覆盖终端仿真器的当前行。
汤姆·齐奇弄清楚为什么你的程序的输出是o world
而\r
位于该行的末尾,之后您不会打印任何内容:
当程序退出时,shell 会打印命令提示符。o world
。
这在线编译器 您提到的只是将原始输出打印到浏览器。\r
没有影响。
看https://en.wikipedia.org/wiki/Carriage_return
这是一个使用示例\r
:
#include <stdio.h>
#include <unistd.h>
int main()
{
char chars[] = {'-', '\\', '|', '/'};
unsigned int i;
for (i = 0; ; ++i) {
printf("%c\r", chars[i % sizeof(chars)]);
fflush(stdout);
usleep(200000);
}
return 0;
}
它重复打印字符-
\
|
/
在同一位置,给人一种旋转的错觉|
在终端中。