是否有正确的回车顺序然后新换行?对于文本编辑器,它们出现的顺序是否重要?
例如,而不是
\r\n
Run Code Online (Sandbox Code Playgroud)
这个
\n\r
Run Code Online (Sandbox Code Playgroud)
好像杰夫已经写了一篇关于这个主题的非常好的博客文章.
Hot*_*cks 31
当使用两个控制字符时,传统的顺序是回车符,然后是换行符.
原因可以追溯到旧的ASR-33 Teletype.
当ASR-33发出回车时,如果打印头靠近右边缘,打印头需要十分之一秒才能返回到左边距,再加上左边有一点"反弹"保证金受到打击.
如果订单是换行,然后是回车,则第一个打印字符可能在回车后十分之一秒内发生,因此可能最终在页面中间打印(作为涂片).但如果在回车后进行换行,那么换行所需的时间为打印头完成行程提供了额外的时间.
一些系统(我认为旧的Xerox Sigma 7 OS,例如)进行换行,然后进行回车,但是它们将例如NULL字符注入到数据流中以允许打印头执行此操作.
当然,当你使用更快的设备(例如早期的30个CPS电传打字机)时,问题会变得更糟,需要更复杂的策略.
(还有一点是,对于用户输入,用户按回车键提供回车,而换行必须由计算机提供.因此,通常打印正常的"样式"行以换行开头,以回车结束.用户输入的提示只包含换行,而用户输入以回车结束.这个方案在使用时效果很好,但当然没有总是发生.)
Con*_*ler 21
有三种常见的换行格式:
\n\r并不是我所知道的任何标准,并且可能会导致编辑认为它具有Unix格式的文本文件,然后它会将奇怪的\ r \n字符显示为文本.
历史上,\ r转换为回车(CR,ASCII代码13),它指的是旧式打字机,您可以将托架向后推回以将光标返回到行的开头.\n转换为换行符(LF,ASCII代码10),将字符向下移动一页字符.虽然可能有趣,但通常无关紧要 - 只需为您当前的平台使用适当的换行格式.
作为回车的后续行动,然后是换行研究锅。
使用记事本,它会在找到字符 CR+LF 时检测行尾。这是 CP/M、MS-DOS 和 Win32 使用的通用格式,Source
Unix 在找到 LF 时检测到行尾。
Apple 在找到 CR 时检测到行尾。
从 Uni-Code 的角度来看,有一个称为NEXT LINE (NEL)的控制字符只是为了使情况更加复杂。
用C编程语言,为什么给它换行符就写回车+换行符?例如
printf("hello World \n ")。
C 编程语言和 Unix 操作系统将换行符重新定义为换行符,目的是 stdio 库将换行符转换为实际转到该平台下一行开头所需的任何字符,例如,回车 + 换行符对于 Win32。
因此,当您在 C/C++ 和 Windows 或 Linux 上编写换行符(即真正的 LF 字符)时,工作室库将确定需要为该平台的行尾输出的输出格式。
这在 C 程序中创建二进制文件或文本文件时很明显。如果您指定您正在编写二进制文件,工作室库将保持该平台的输出格式不变。因此,当将数据写入文件并遇到换行符时,它不会为新行插入平台相关字符。
虽然在这一切之后得出了结论。
即使您确实遵循 Win32 回车 + 换行规则,例如将以下内容作为纯二进制文件写入文件。
我的文本\n 我的文本\n 我的文本
你假设它会在你的文本编辑器中呈现这样。
我的文本
我的文本
我的文本
大多数编辑器反而会像这样渲染它。
我的文本 我的文本 我的文本
混淆主要是因为 C 标准使用 \n 换行符表示两种不同的含义。首先,作为STIO库的换行符转换为操作系统换行格式(win32上为CR+LF,Linux上为LF,苹果为CR)。其次作为十六进制值换行。
经过10次修改,在Win3.1,95,98,XP上尝试了不同的方法后,我得出的结论是我找不到独立使用CR和LF并且可以在同一文档中组合使用它们的应用程序。大多数文本编辑器在遇到单个 CR 或 LF 时会显示一个正方形。大多数更智能的文本编辑器会根据是否找到适合平台的 CR+LF/LF/CR 来更改文件格式。
大多数(如果不是全部)编辑器只关心向用户呈现新行,并会在不同的文件格式之间切换。因此,如果您的作者很快就会使用词法分析器和字符串标记器,并且担心何时检测新行。最好让下层检测文件格式(CR+LF Win32、LF Linux、CR Apple)来增加行号。或者使用将考虑到这一点的 ReadLine 功能。
至少令人费解的是,为什么 IBM 和 Win32 采用回车 + 换行作为指示文本编辑器呈现新行的标准。事实上它的冗余。我找不到单独呈现或使用回车 + 换行符作为它建议的实际名称的单个应用程序。
因此,如果您的一名大学生正在编写新的文本编辑器来震惊世界。自动检测文件格式,不用担心赋予CR+LF的实际技术含义。