- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件中不同换行符的差异处理
在工作中利用了一个第三方的EML文件解析器来对eml文件进行解析,但是却发现有些文件可以很好 的进行解析,而有些文件则无法解析。但是利用文本编辑器打开看其中的内容和格式却没有发现其中的差别。然后用16进制打开以后发现了问题。可以工作的文件 中每一行结尾时\r\n,而不能被解析的文件中每一行结尾时\r。所以产生了无法解析的问题。
这突然给了我一个教训,其实我们写程序时一直都是用\n来判断是否将要换行,而有一些特别的文件则是用\r”来换行的。先 来讲一下\r和\n的含义吧,\r的意思是“回车”也就其实等于你按下enter,而\n的意思是“换行”也就是使光标下移一行。而我们在编辑文件时不同 的操作系统也会产生不同的差异,在Windows中,如果我们按下换行,则编辑器会自动帮我们产生\r\n;而在类Linux中,如果我们按下换行,则编 辑器只会产生\n。
那怎么来处理如上所属不同操作系统中换行符不同的问题呢?答案是用不同的打开方式来打开。
首先使用测试代码和文件内容如下(三个文件显示完全一样):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include stdio.h
#include stdlib.h
#define MAXSIZE 1000
int main()
{
????//Windows格式\r\n换行,文本内容为12345\r\n12345
????FILE * infile1 = fopen(windows.txt, rb);
????char windowsBuf[MAXSIZE];
????fread(windowsBuf, sizeof(char), 1000, infile1);
????fclose(infile1);
????//Linux格式\n换行,文本内容为12345\n12345
????FILE * infile2 = fopen(linux.txt, rb);
????char linuxBuf[MAXSIZE];
????fread(linuxBuf, sizeof(char), 1000, infile2);
????fclose(infile2);
????//其他格式\r换行,文件内容为12345\r12345
????FILE * infile3 = fopen(other.txt, rb);
????char otherBuf[MAXSIZE];
????fread(otherBuf, sizeof(char), 1000, infile3);
????fclose(infile3);
????system(PAUSE);
????return 1;
} 1. 使用二进制方式打开。windowsBuf中的内容为12345\r\n12345;linuxBuf中的内容为12345 \n12345;otherBuf中的内容为12345\r12345。所以二进制方式打开文件时不会对文件内容做任何变化,只是原封不动的读出文件的内 容。
2. 使用文本方式打开(在测试代码中把rb改成r)。windowsBuf中的内容为12345\n12345;linuxBuf中的内容为 12345\n12345;otherBuf中的内容为12345\r12345。所以当用文本方式打开文件时,不管什么操作系统,都会把\r\n和\n 同意变成\n。从而消除了差异化的为。但是如果换行符是\r时,则也不会做任何变化。
所以最终的结果是如果是二进制方式打开,我们需要自己处理三种换行情况;而如果是用文本方式打开,我们只需要处理\r和\n的情况。
您可能关注的文档
- 描写济南名胜古迹的诗句.doc
- 描写缘分的优美句子.doc
- 描写赞美大自然景物的句子和段落及片段 (2).doc
- 提升个人理财规划理念.doc
- 提升服务理念大家谈.doc
- 提高企业职工队伍技术素质浅谈.doc
- 提高干部教育培训质量和效益.doc
- 提高看图写话活动总结.doc
- 提高阅读和写作水平的途径袁新霞.doc
- 揭秘IT人才特点:中美印日四国程序员比较.doc
- springbooot+vue基于java的房屋维修系统毕业论文.doc
- 中国消防救援学院《单片机系统实验》2023-2024学年第一学期期末试卷.doc
- 2025年溧阳纺织化学品项目申请.pptx
- 景区门票包销合同模板(3篇).docx
- 【股票技术指标学习指南】第七章第三节货币需要量的测算.doc
- 2025春 _ 人教版七年级英语下册【unit4】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit5】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit6】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit7】看音标写单词.doc
- 2025春 _ 人教版七年级英语下册【unit8】看音标写单词.doc
文档评论(0)