fopen函数

chikuang110 2009-09-27 11:48:55

FILE* fp1 = fopen("D:\\Data1.txt", "w");
fprintf(fp1, "%d\n%d", 23, 43);
fclose(fp1);

FILE* fp2 = fopen("D:\\Data2.txt", "wb");
fprintf(fp2, "%d\n%d", 23, 43);
fclose(fp2);


第一种情况,window下文本编辑器中显示为:
23
43

第二种情况,window下文本编辑器中显示为:
2343

为什么第二种没有换行?
...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小枫 2009-09-28
  • 打赏
  • 举报
回复
学习
pigniyan 2009-09-28
  • 打赏
  • 举报
回复
C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写

时,每遇到一个''\n''(0AH换行符),它将其换成''\r\n''(0D0AH,回车换行),然后再写入

文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区.正

因为文本方式有''\n''--''\r\n''之间的转换,其存在转换耗时.二进制读写时,其不存

在任何转换,直接将写缓冲区中数据写入文件.

NewJerryj 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pigniyan 的回复:]
C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写

时,每遇到一个''\n''(0AH换行符),它将其换成''\r\n''(0D0AH,回车换行),然后再写入

文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区.正

因为文本方式有''\n''--''\r\n''之间的转换,其存在转换耗时.二进制读写时,其不存

在任何转换,直接将写缓冲区中数据写入文件.


[/Quote]

恩,正确。再补充一下:
在Windows环境下,换行是由13,10(回车,换行)两个字符来实现的,所以当以二进制方式写入上述
"%d\n%d",23,43 时,最终将无法实现换行。


starcat 2009-09-27
  • 打赏
  • 举报
回复
二进制方式,\n不会转化成换行

69,373

社区成员

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

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