C语言中的换行符是什么:\ r或\n?

and*_*ndy 22 c newline

C中的换行符是什么?我知道不同的操作系统有不同的行尾字符,但它们被翻译成C换行符.这个角色是什么?

Cro*_*man 48

是的\n.当您正在阅读或编写文本模式文件或stdin/stdout等时,您必须使用\n,C将为您处理翻译.当您处理二进制文件时,根据定义,您可以独立完成.

  • 为什么选择downvote?到目前为止,这是唯一正确的答案. (9认同)
  • "C将为您处理翻译":这是一个相当误导性的陈述.文字字符串中的字符转义由编译器处理(通常是格式字符串).输入和输出流中的字符转义(由scanf读取,获取,cin ......或由printf,puts,cout ...写入)不会被处理.<\n>仍然是两个字符<\>和<n>,并且Ascii代码10被视为换行符. (2认同)
  • @YvesDaoust:很明显,这个问题(和答案)与转义无关。问题中的“翻译”不是从两个字符的转义序列到“ \ n”到“ 10”,而是从单个“ \ n”到“ CRLF”,“ CR”或“ LF” `,或文本文件中行尾的本地约定。所以不,这不是一个误导性的陈述,并且流确实在需要时在这里进行翻译。 (2认同)
  • @YvesDaoust:那我不知道你在谈论什么.你开始谈论"角色逃逸",这显然是一种表示非图形字符的方式,并且只出现在源代码中,而不是"输入"或"显示".这个问题是关于C换行符,`'\n'`,以及如何在文本流中对行尾的外部表示进行转换,无论后者在给定的实现上是什么. (2认同)

chu*_*ica 12

新线可能被认为是一些 char,它的价值'\n'.C11 5.2.1

这个C新行出现在3个位置:C源代码,char文本模式下作为文件I/O中的单个和行尾.

  1. 许多编译器会将源文本视为ASCII.在这种情况下,代码10,有时是13,有时配对13,10作为源代码的新行.如果源代码在另一个字符集中,则可以使用不同的代码.这个新行通常标志着一行源代码的结束(这里实际上有点复杂),//注释和#指令.

  2. 在源代码中,2个字符的文本\代表n换行符.如果使用ASCII,char则其值为10.

  3. 在文件I/O中,在文本模式下,在读取输入文件(和stdin)的字节时,根据环境,当值(s)为10(Unix),13,10,(*1)的字节时(Windows),13(旧Mac ??)和其他变体被翻译成'\n'.在写入文件(或stdout)时,发生反向转换.
    注意:二进制模式下的文件I/O不进行转换.

\n源代码是回车char.

(*1)单独的13和/或10也可以转化为'\r'.


pav*_*zar 9

如果你的换行符是换行符,那么\n\ r载波返回字符,但是如果你的意思是换行符结束那么它取决于操作系统:DOS使用回车符和换行符("\ r \" n")作为行结尾,Unix只使用换行符("\n")


小智 5

'\ r'=回车符,'\ n'=换行符。

实际上,当您在不同的操作系统中使用它们时,会有一些不同的行为。在Unix上为'\ n',在Windows上为'\ r'\ n'。