杂记
2015-07-17 15:04
375 查看
1.默认fopen只能打开2G以下的文件,
2.fopen以更新方式打开文件(模式中+号,例如“r+”/“w+”/“a+”),不能读完就写,写完就读,中间需要调用干预函数(例如fseek等)进行读写转换。
Question:http://bbs.csdn.net/topics/391907768
Solution:http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html
3.http://www.cnblogs.com/ascii0x03/p/4838671.html
默认使用文本模式读写文件惹的祸:windows下,文本模式会将\n输出成\r\n,读取时也会将\r\n变成一个\n;所以开始程序B读取文件F并且计算MD5时,是以\n来计算的。然而当从服务器上下载下来时,文件是以\r\n作为行结尾的,直接计算MD5会导致值不一样。而将下载下来的文件保存时,由于仍然使用的文本模式,将\r\n变成了\r\r\n,导致了当初匪夷所思的结果。
“使用二进制文件模式时,程序将数据从内存传递给文件(反之亦然)时,将不会发生任何隐藏的转换,而默认的文本模式并非如此。例如,对于Windows文本文件,他们使用两个字符的组合吧(回车和换行)表示换行符;Mac文本文件使用回车表示换行符;而UNIX和Linux文件使用换行来表示换行符。C++是从UNIX系统上发展而来的,因此也使用换行来表示换行符。为增加可移植性,Windows C++程序在写文本模式文件时,自动将C++换行符转换为回车和换行;Mac C++程序在写文件时,将换行符转换为回车。在读取文本文件时,这些程序将本地换行符转换为C++模式。对于二进制数据,文本格式会引起问题,因为double值中间的字节可能与换行符的ASCII码有相同的位模式。另外,在文件末尾的检测方式也有区别。因此以二进制格式保存数据时,应使用二进制文件模式。”
4.使用fwrite向文件写入结构体时,包含结构体对齐产生的补齐字节
2.fopen以更新方式打开文件(模式中+号,例如“r+”/“w+”/“a+”),不能读完就写,写完就读,中间需要调用干预函数(例如fseek等)进行读写转换。
Question:http://bbs.csdn.net/topics/391907768
Solution:http://pubs.opengroup.org/onlinepubs/9699919799/functions/fopen.html
3.http://www.cnblogs.com/ascii0x03/p/4838671.html
默认使用文本模式读写文件惹的祸:windows下,文本模式会将\n输出成\r\n,读取时也会将\r\n变成一个\n;所以开始程序B读取文件F并且计算MD5时,是以\n来计算的。然而当从服务器上下载下来时,文件是以\r\n作为行结尾的,直接计算MD5会导致值不一样。而将下载下来的文件保存时,由于仍然使用的文本模式,将\r\n变成了\r\r\n,导致了当初匪夷所思的结果。
“使用二进制文件模式时,程序将数据从内存传递给文件(反之亦然)时,将不会发生任何隐藏的转换,而默认的文本模式并非如此。例如,对于Windows文本文件,他们使用两个字符的组合吧(回车和换行)表示换行符;Mac文本文件使用回车表示换行符;而UNIX和Linux文件使用换行来表示换行符。C++是从UNIX系统上发展而来的,因此也使用换行来表示换行符。为增加可移植性,Windows C++程序在写文本模式文件时,自动将C++换行符转换为回车和换行;Mac C++程序在写文件时,将换行符转换为回车。在读取文本文件时,这些程序将本地换行符转换为C++模式。对于二进制数据,文本格式会引起问题,因为double值中间的字节可能与换行符的ASCII码有相同的位模式。另外,在文件末尾的检测方式也有区别。因此以二进制格式保存数据时,应使用二进制文件模式。”
4.使用fwrite向文件写入结构体时,包含结构体对齐产生的补齐字节
相关文章推荐
- 教程-Delphi7设置功能表
- Linux环境下Python的安装过程
- Remove Event Handler via Reflection
- Ducci Sequence
- actionbar使用
- startActivityForResult() 中requestCode 和 resultCode 的作用
- 【facebook】程序猿提高工作效率的15点技巧
- MiniTwitter记住密码等功能实现
- thinkphp autoload 命名空间自定义 namespace
- linux kernel scheduler -- 进程优先级
- Linux常用C函数-字符测试篇
- 几点看法:关于“优衣库”
- Facebook、微信和陌陌,一起来看看社交应用的商业化尝试
- Android 自定义 ViewPager 打造千变万化的图片切换效果
- http和socket之长连接和短连接区别
- 微信、陌陌等著名IM软件设计架构详解
- 教程-FastReport 的安装 心得
- Java数据结构和算法的数组
- (剑指Offer)面试题26:复杂链表的复制
- 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]