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

问题描述 投票:21回答:4

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

c newline
4个回答
46
投票

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


12
投票

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

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

  1. 许多编译器会将源文本视为ASCII。在这种情况下,代码10,有时是13,有时配对13,10作为源代码的新行。如果源代码在另一个字符集中,则可以使用不同的代码。这个新行通常标志着一行源代码的结束(这里实际上有点复杂),//注释和#指令。
  2. 在源代码中,2个字符\n代表char新行为\n。如果使用ASCII,则此char的值为10。
  3. 在文件I / O中,在文本模式下,在读取输入文件(和stdin)的字节时,根据环境,当值为(10)的字节(Unix),13,10,(* 1)时(Windows),13(旧Mac ??)和其他变体被翻译成'\ n'。在写入文件(或stdout)时,发生反向转换。 注意:二进制模式下的文件I / O不进行转换。

源代码中的'\r'是回车char

(* 1)单独的13和/或10也可能转化为\n


8
投票

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


4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.