回车顺序和新换行

时间:2009-12-11 05:09:58

标签: text newline

是否有正确的回车顺序然后新换行?对于文本编辑器,它们出现的顺序是否重要?

例如,而不是

\r\n

\n\r

好像Jeff已经在这个主题上写了一篇非常好的 Blog Post

4 个答案:

答案 0 :(得分:19)

有三种常见的换行格式:

  • \ r \ n用于DOS \ Windows世界
  • \ r \ n用于OSX之前的Mac世界
  • \ n用于Unix和类Unix世界

\ n \ r并不是我所知道的任何标准,并且可能会导致编辑认为它具有Unix格式的文本文件,然后它会将奇怪的\ r \ n字符显示为文本。

历史上,\ r转换为回车(CR,ASCII代码13),它指的是旧式打字机,您可以将回车推回到左侧,将光标返回到行的开头。 \ n转换为换行符(LF,ASCII代码10),将字符向下移动一页字符。虽然可能很有趣,但通常无关紧要 - 只需为您当前的平台使用适当的换行格式。

答案 1 :(得分:4)

仅作为回车的后续行动,然后是Line Feed研究罐。

使用NotePad,它会在找到字符CR + LF时检测到行尾。这是CP / M,MS-DOS和Win32使用的一般格式, Source

Unix在找到LF时会检测到行尾 Apple在找到CR时会检测到行尾。

从Uni-Code的角度来看,有一个名为 NEXT LINE (NEL) 的控制角色,只是为了让情况更加复杂。

使用C编程语言,为什么在给它换行字符时写出回车符+换行符?例如

printf(“你好世界 \ n ”)。

C编程语言和Unix操作系统将换行符重新定义为换行符,目的是将stdio库转换为换行符,以实际转到下一行的开头对于该平台,例如,回车+ Win32的换行。

因此,当您在C / C ++和Windows或Linux上编写新行字符(即真正的LF字符)时,工作室库将确定需要为该行结束输出的输出格式。平台。

这在C程序中创建二进制文件或文本文件时很明显。如果您指定要编写二进制文件,则工作室库将保持该平台的输出格式不变。因此,当将数据写入文件并且它遇到换行符时,它不会为新行插入平台相关字符。

虽然在这之后得出结论。

即使您遵循Carriage Return +换行符的Win32规则,例如将以下内容写入文件作为纯二进制文件。

MyText \ n MyText \ n MyText

并且您认为它将在您的文本编辑器中以这样的方式呈现。

MyText 
      MyText 
            MyText

大多数编辑都会像这样呈现它。

MyText 
MyText 
MyText

混淆主要是因为C标准使用\ n新行字符表示两种不同的含义。首先,作为STIO库的新线路指示器转换为操作系统的新线路格式(win32上的CR + LF,Linux上的LF和Apple的CR)。其次是正好的十六进制值换行。


经过10次修改并在Win3.1,95,98,XP上尝试了不同的方法我得出结论我找不到一个独立使用CR和LF的应用程序,并且可以在它们中使用它们的组合同一份文件。大多数文本编辑器在遇到单个CR或LF时会显示正方形。大多数更聪明的文本编辑器会根据相应平台的CR + LF / LF / CR来改变文件格式。

大多数(如果不是所有)编辑器只关心向用户呈现新行并且将在不同文件格式之间切换。因此,如果您的编写者很快就会成为词法分析器和字符串标记器,并担心何时检测到新行。它最适合较低级别检测文件格式(CR + LF Win32,LF Linux,CR Apple)来增加行号。或者使用ReadLine功能将其考虑在内。

至少可以说令人费解的是,为什么Carriage Return + Line Feed被IBM和Win32用作指示文本编辑器呈现新行的标准。实际上它的冗余。我找不到一个单独的应用程序,它独立地呈现或使用了Carriage Return + Line Feed,而不是它所建议的实际名称。

因此,如果你的大学生正在编写新的文本编辑器,以惊世骇俗。自动检测文件格式,不用担心CR + LF的实际技术含义。

答案 2 :(得分:4)

(对不起,但这是关于此问题的搜索结果的主要结果)

在Notepad ++中它很重要。当您从换行符\n开始,然后回车\r时,您的换行将在下一行结束。所以顺序应该是:CR LF

enter image description here

答案 3 :(得分:1)

那里有许多换行转换器。

E.g。 this one。他们为你完成大部分工作。