"\n"和"\r"的区别是什么?

801

回车符 \r 和换行符 \n 在IT技术中有什么区别?

具体而言,\r\n之间是否存在任何实际差异?是否有应使用其中一个而不是另一个的情况?


4
所有答案都很可预知,但我很想知道 \n 和 \r 之间是否存在任何实际上的区别。有没有应该使用其中一种而不是另一种的情况? - Vlad the Impala
14
是的,只包含LF(换行符)的文本文件在某些Windows应用程序中不会被视为已终止,而以CRLF结尾的文本文件在某些Linux应用程序中打开时会出现额外的字符。 - pavium
4
是的,一些 Linux 终端应用程序使用 \r 来进行旋转行动画。 - Murali
10
\r 是否仍然是Mac的普通行末符?我确信在“Classic” Mac系统中是这样,但我曾认为OS X已经类Unix化了。(这说明我对Mac并不熟悉,是吧?) - John Y
19
从历史上看,\n 用于将打印位置下移一行,而 \r 用于将打印位置移回页面的左侧。 - karthik gorijavolu
12个回答

0
#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();

}

让我们以这个例子为例,尝试把 \r 替换成 \n,它不会起作用,请猜测原因?


2
只有在底层操作系统在按下回车键时发送\r\n(例如MS DOS,DECS TOPS-10,CP/M,RT-11等)才能正常工作。在像Multic、Unix和类Unix(如Linux、Minix等)、BeOS、RISCOS等操作系统中,回车键只会发送一个\n字符。 - Anders
1
啊,是的,好旧的日子,当键盘上曾经有“Return”和“Enter”两个键。即使我的现代无线键盘仍然在旧的“Return”键上显示向下和向后箭头(现在被称为“Enter”,以与数字键盘的“Enter”键保持一致,该键不显示箭头)。 - nothingisnecessary
在“现代语言”中,当使用\r\n而不是\r?\n来分割行时,这些错误/有问题的代码仍然可能存在。这种情况可以在Windows代码库中找到,特别是在没有提供虚拟换行符的语言运行时中。 - user2864740

-1

我根据 Ian Boyd的回答 写了一个回车符示例。

这个 Python 脚本将通过在返回到行首来打印字符来打印同一行的字符。

\r

import time
for i in "I'm", "N", "Ne", "Neo":
    time.sleep(1)
    print(i, end='\r')

\n

import time
for i in "I'm", "N", "Ne", "Neo":
    time.sleep(1)
    print(i, end='\n')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接