Windows回车为\r\n
,而在Unix中为\n
,\r\n
被视为两个字符?
答案 0 :(得分:101)
这是两个字符:
\r
是回车; \n
是换行符。两个字符组合代表Windows上的新行。而在Linux上,\n
代表新行。它将光标移动到Linux上新行的开头。在Windows上,光标将保留在控制台中的同一列,但在下一行。
\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
字符来选择强制一致的样式。