\n(换行符)和\r(回车符)有什么区别?

特别地,\n和\r之间有什么实际的区别吗?是否有应该使用其中一种而不是另一种的地方?


当前回答

因为没有人特别提到它(他们是不是太小了,不知道/不记得?)-我怀疑\r\n的使用起源于打字机和类似的设备。

当你在使用多行打字机时,想要打出新的一行,它必须执行两个物理操作:将滑架滑回页面的开头(在美国是左),并将纸张上一个缺口。

在行式打印机的时代,打印粗体文本的唯一方法,例如,是做一个没有换行符的回车,并在旧的字符上打印相同的字符,从而添加更多的墨水,从而使它看起来更暗(粗体)。当打字机的机械式“换行”功能失效时,令人讨厌的结果是:如果你不注意,你可能会把上一行文本敲过。

其他回答

两个不同的角色。

\n在Unix文本文件中用作行结束符

\r历史上(在os X之前)在Mac文本文件中用作行结束符

\r\n(即同时使用)用于终止Windows和DOS文本文件中的行。

历史上,a \n用于向下移动车厢,而\r用于将车厢移回页面的左侧。

\r:回车̲return cr -返回行首回车 \n:换行(n̲ew Line) lf -纸上一行

在屏幕输出的上下文中:

CR:将光标返回到当前行的开头 “LF”:光标下移一行

例如:

你好,\n世界\r!

应该在您的终端上呈现为:

Hello,
!     world

一些操作系统可能会破坏预期行为的兼容性,但这不会改变“\n和\r之间的差异?”这个问题的答案。

#include <stdio.h>

void main()
{
  int countch=0;
  int countwd=1;

  printf("Enter your sentence in lowercase: ");
  char ch='a';
  while(ch!='\r')
  {
    ch=getche();
    if(ch==' ')
      countwd++;
    else
      countch++;
  }

  printf("\n Words = ",countwd);

  printf("Characters = ",countch-1);

  getch();

}

让我们以这个例子为例,试着把\n放在\r的地方,它不会工作,并试着猜测为什么?

不同操作系统的两个不同字符。这在通过TCP/IP传输的数据中也起着作用,这需要使用\r\n。

\ n Unix

\ r Mac

Windows和DOS。