Windows回车\ r \ n是由两个字符还是一个字符组成?

时间:2011-08-10 15:05:00

标签: carriage-return

Windows回车为\r\n,而在Unix中为\n\r\n被视为两个字符?

6 个答案:

答案 0 :(得分:101)

这是两个字符:

  • \r是回车;
  • \n是换行符。

两个字符组合代表Windows上的新行。而在Linux上,\n代表新行。它将光标移动到Linux上新行的开头。在Windows上,光标将保留在控制台中的同一列,但在下一行。

Linux上的

\r与Windows具有相同的效果:将光标移动到行的开头。可以在使用\r而不是\n的同一行打印不同的信息。

答案 1 :(得分:7)

实际上\r is 0x0D (^M) and \n is 0x0A (^J),但.....在Windows上:

\n will write 0x0D 0x0A

on unix:

\r will write 0x0D
\n will write 0x0A

答案 2 :(得分:6)

取决于设置。 \r\n是两个字节宽(ASCII,UTF-8等),但是当在文本模式下操作时,I / O库(例如C的stdio库和其他库)可以在{{1}之间进行转换}和\n准透明。

即,在Windows平台上,使用

读取文本模式流\r\n的C程序
txt_in

不会报告while ((c = getc(txt_in)) != EOF) printf("%02x\n", c); 的ASCII代码。相反,\r实际上会将putc('\n', txt_out)写入文字模式流\r\n

答案 3 :(得分:5)

Windows不区分\r\n和任何其他两个字符。但是,有一种情况是将其视为一个字符:如果您使用C运行时并以文本形式打开文件,则文件中的\r\n将被视为\n\n }将作为\r\n写入文件。

答案 4 :(得分:2)

是的,它是两个字符:回车'\ r'后跟换行'\ n'。

答案 5 :(得分:0)

我在Windows上使用Notepad ++和Sublime Text 2进行了一些测试(没什么特别的),结果发现\r\n确实是2个不同的字符,但是......

当按下返回键时,可能会插入不同的文字编辑器,或者他们可能无法插入\r

在文本编辑器中尝试以下操作:

1
2
3
4
5

然后按 Ctrl + F ,启用正则表达式并搜索\r。根据您的文本编辑器及其设置,您可能会在每行末尾“点击”或“未点击”某个字符。如果上述文本是从其他编辑器复制粘贴的,则行为也可能不同......

某些文字编辑器允许在其设置中进行自定义,您可以在其中指定在按返回时是否要插入\r\n或unix样式\n。最重要的是,它们可能允许您在保存文件之前通过剥离或插入\r字符来选择强制一致的样式。