文本模式读写文件中\r和\n的问题
来源:互联网 发布:mysql 行列转换 编辑:程序博客网 时间:2024/05/20 05:59
原文地址:http://blog.sina.com.cn/s/blog_65db99840100kidc.html
DOS文件(windows格式文件)中,按一下ENTER就是输入了\r\n,这就是回车换行
MAC文件里,用\r换行
UNIX文件里,用\n换行
自己尝试了一些\r \n的组合,归纳了下规律:
windows下用文本方式写文件时
缓冲区里的\n或者\r都会被自动替换为\r\n写入文件,即使是连着的\r\n,也会被替换成\r\n\r\n(但是msdn上面只说\r被替换为\r\n,我的前面一篇博文里有原文)
windows下用文本方式读文件时
文件中的\r\n自动替换为\n存放到缓冲区里(这点和msdn是符合的,前面的博文里有原文)
\r不会被替换
假设要读取的文件流长度小于缓冲区长度
如果用fread文本模式读文件,\r\n被替换为\n读进缓存区里
如果是fgets文本模式读文件,碰到第一个\n(这里的\r和\n都是指经过转换后读入缓冲区的,即\r\n被替换为\n)后停止读取,缓存区里存放的是\n之前的字符串(包括这个\n以及之前所有的\r)
fread和fwrite的返回值问题
文本模式写文件时,\n或\r自动替换成\r\n,但是fwrite的返回值里还是算写了一个字符(和msdn符合,前面一篇博文有原文)
文本模式读文件时,\r\n被自动替换为\n,但是也算是读了一个字符(和msdn的不一样,msdn是说算读了2个,前面的博文里有原文)
如果用UltraEdit打开文本文件有时候会碰到询问你是否要转换为DOS文件,其实就是回车换行符的问题了。做了如下表的尝试,但是规律不太好总结啊。
要写入的字符
实际写入的字符(即\n被替换为\r\n后)
Ultraedit转换为DOS格式后的文件内的实际字符
\r
\r
\r\n
\n
\r\n
未提示转换为DOS文件
\r\n
\r\r\n
\r\n
\n\r
\r\n\r
未提示转换为DOS文件
\n\r\n
\r\n\r\r\n
\r\n\r\n
\n\r\n\r
\r\n\r\r\n\r
\r\n\r\n
\n\r\n\n\r
\r\n\r\r\n\r\n\r
\r\n\r\n\r\n\r\n
\r\r\n\n
\r\r\r\n\r\n
\r\n\r\n\r\n
\r\r\r\n\r\n
\r\r\r\r\n\r\r\n
\r\n\r\n\r\n\r\n
\n\r\r
\r\n\r\r
\r\n\r\n\r\n
\n\r\r\r\r
\r\n\r\r\r\r
\r\n\r\n\r\n\r\n\r\n
- 文本模式读写文件中\r和\n的问题
- iOS文件读写遇到\r\n问题
- python文本处理中\r回车\n换行的问题
- echo中\r与\n的问题!
- PHP和.net等从XML文件中读取的\n或\r\n不能换行。
- 正确理解Python文件读写模式字w+、a+和r+
- 系统中\r和\n的区别?
- 关于文件的文本读写和二进制读写
- \r,\n,\r\n的问题分析
- 【VC编程技巧】文件☞2.2文件读写缓存机制和换行符(\r\n)
- \r\n和\n\r的区别?
- R读写Excel文件中数据的方法
- 【Android】android 中R文件的问题
- Android中R文件的丢失问题
- Android中R文件的丢失问题
- Android中R文件的丢失问题
- Android中R文件的丢失问题
- ADT 中R文件丢失的问题
- js截取一定长度的字符,文字设置成2个字符截取
- (ZZ) SCTP 消息结构(三)
- 程序员必须知道的10大基础实用算法及其讲解
- linux stat函数讲解
- 【ACDream】1074 风之国 线段树+DP
- 文本模式读写文件中\r和\n的问题
- 世界杯的到来,让加班的IT者如何是好呢!!!!
- conversion to dalvik format failed with error 1
- was集群下基于接口分布式架构和开发经验谈
- test
- 用友NC6以人为本助企业管理精细化
- 全能多媒体开发框架Vitamio
- 优游平台总代【总代Q941494533】舶
- 优游平台总代帮你注册【总代Q941494533】啡