首先我们需要搞明白\r和\n是两回事
'\r'是回车,前者使光标到行首,(carriage return)
'\n'是换行,后者使光标下移一格,(line feed)
Linux平台下
#include <stdio.h>
int main()
{
printf("abcdef\ra");
return 0;
}
结果
在Linux平台下\r回车后,\r后的新内容会把之前的内容全部覆盖,
即之前的就内容全部擦除后,再从行首写入新内容
VS平台下
//情况1:
int main()
{
printf("abcd\r12");
return 0;
}
//情况2:
int main()
{
printf("abcd\r");
return 0;
}
情况1结果
情况2结果
vs编译器的机制是在这种情况下,\r后面输入的内容后还会再多输入一个空格所以会造成c位置被覆盖成空