Windows的换行符是\r\n还是\n?

ashamwolf 2010-10-28 10:18:21
原来一直以为Windows中,文件里面的换行符是\r\n,但昨天调试程序的时候发现:如果向文件中写入"\r\n",那么实际写入的是0x0d 0x0d 0x0a;如果写入"\n",那么写入的就是0x0d 0x0a。
我昨天测试用的是win7,但以前用xp的时候也会有异常,只是没查出是这个原因。
哪位老兄给个明确的答案?非常感谢
...全文
42254 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjlsmail 2013-05-07
  • 打赏
  • 举报
回复
文本用\n就可以
ji4ming2 2012-05-04
  • 打赏
  • 举报
回复
以前用同样的程序都以\n换行,在视窗和UNIX下输出。换行部分可能是0a0d或者只有0d,这个和操作系统有关。

但是即便是unix下输出的东西,传回视窗后,用记事本打开就看不到换行。但是换写字板、word之类就没问题。直接用cmd来现实文本文件内容也能看到换行。

然后好像用不同的ftp来穿文件,随选项不同,可能自动给换行部分加个字符,于是可以看到文件大小有变。

所以也许应该这么说,视窗下、unix下的约定如楼主所说。但是实际的程序里有“串词”的情况,因为可能需要考虑可能会读来自不同操作系统的文件。

实际写的时候,好像在视窗下,用C输出时,用一个符号\n就相当于写了二个字符\r\n。但是在unix下,这么做只输出\n。所以如果是在unix下逐个字符读视窗下的文件,得考虑读到\r的情况。

没花时间仔细试探过,所以上述说法可能有错。
bo_00 2010-10-28
  • 打赏
  • 举报
回复 1
是\r\n跟操作系统没关系,跟编辑软件有关系。

当你在记事本或word编辑时,按下enter,该软件默认的方式是插入回车\r,再插入换行\n。

当然如果在word下,按shift+enter,word这个软件回只向编辑的地址空间下,插入一个换行\n。
(有的编辑软件,提供设置界面接口,当按下enter时,可选择插入的是 ( 回车\r 或 换行\n 或 回车\r+换行\n)
当然如果编辑软件做了的话,也可以插入 换行\n+回车\r 或 其他任意一个值(例如0x01,0x02,0x03..))

linux上的编辑软件,一般默认是按enter,只插入一个换行\n。

walfud 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xjpzy 的回复:]

用二进制方式时是\r\n,用文本方式时是\n
[/Quote]

说的对
xjpzy 2010-10-28
  • 打赏
  • 举报
回复
用二进制方式时是\r\n,用文本方式时是\n
zhutianjin4355255 2010-10-28
  • 打赏
  • 举报
回复
换行符是\r\n 写程序时用\n
luciferisnotsatan 2010-10-28
  • 打赏
  • 举报
回复
\r回车,\n换行

windows使用的换行符为\r\n
康斯坦汀 2010-10-28
  • 打赏
  • 举报
回复
肯定是 \r\n 类UNIX是\n
try325 2010-10-28
  • 打赏
  • 举报
回复
windows下换行符是\r\n
winton_adlsy 2010-10-28
  • 打赏
  • 举报
回复
换行符是\r\n 写程序时用\n
vanchristin 2010-10-28
  • 打赏
  • 举报
回复
那就是windows在写入文件的时候把一个\n转换成了\r\n,\r保持不变
「已注销」 2010-10-28
  • 打赏
  • 举报
回复
\r\r\n

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧