个人技术分享

首先我们需要搞明白\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位置被覆盖成空