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

Oh *_*oon 73 carriage-return

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

Ale*_*nov 104

这是两个字符:

  • \r 是回车;
  • \n 是换行.

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

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

  • +1。作为OP的附加信息:[Newline](http://en.wikipedia.org/wiki/Newline)。 (2认同)

TMS*_*TMS 7

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

\n will write 0x0D 0x0A
Run Code Online (Sandbox Code Playgroud)

在unix上:

\r will write 0x0D
\n will write 0x0A
Run Code Online (Sandbox Code Playgroud)


Fre*_*Foo 6

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

即,在Windows平台上,一个C程序读取文本模式流txt_in

while ((c = getc(txt_in)) != EOF)
    printf("%02x\n", c);
Run Code Online (Sandbox Code Playgroud)

不会报告ASCII码\r.相反,putc('\n', txt_out)实际上会写入\r\n文本模式流txt_out.


yme*_*ett 5

Windows不区分\r\n和任何其他两个字符.但是,有一种情况是将其视为一个字符:如果使用C运行时并将文件作为文本打开,则\r\n该文件将被读取为\n,并将\n作为文件写入文件\r\n.