答案 0 :(得分:19)
有三种常见的换行格式:
\ 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
答案 3 :(得分:1)
那里有许多换行转换器。
E.g。 this one。他们为你完成大部分工作。