fread读取模式的选择
来源:互联网 发布:node excelexport 编辑:程序博客网 时间:2024/06/05 09:07
今天在写资源管理器的时候,加载音频文件,发现文件头的格式对不上,刚开始以为是读头的逻辑出错了,在vs下用Debug的Memory和用hex格式对比发现,最终是发现内存没有加载全只是加载了一部分的原因,是读到了0x1a
google了一下,发现自己打开文件的方式不对,我使用的是:
1
FILE
* file =
fopen
( path,
"r"
);
而正确的应该是:
1
FILE
* file =
fopen
( path,
"rb"
);
为什么是这样子呢,因为如果用"r"模式打开,字符是有意义的,只要是读到0x1A时,fread就认为是结束。为什么是0x1a,而不是别的,写个小例子输出一下ctrl + z的ascii码值发现,它的ascii码值就是26在windows上(Linux是挂起任务)。
但你以"rb"读到文本,系统IO只会认为它是文本而非别的东西。
推荐一个HEX查看器,当资源和内存数据不符的时候,Hex格式的查看显得比较重要了。Notepad++的一个插件,Hex Editor.
解压缩后把HexEditor.dll文件复制到安装目录(如:Dir\Notepad++\plugins),退出NotePad++重新打开即可!需要以十六进制显示时,点击菜单的:【插件】-【Hex-Editor】-【View in Hex】即可。因为是在sf上,FQ比较麻烦,直接博客园的下载地址:http://download.csdn.net/detail/chinarpgmaker/9556045
reference:
1.http://blog.sina.com.cn/s/blog_4e0987310101o9xl.html
2.http://shandian.biz/490.html
0 0
- fread读取模式的选择
- 质疑fread()的块方式读取
- fread读取文件读不全的问题解决
- fread与file_get_contents读取文件的区别
- fread读取文件注意
- fread 读取文件问题
- fread读取指针时文件指针的变化
- ubunt下c库函数fread不能读取的问题
- fread-C语言是怎样读取文件的
- fread读取yuv图像文件不完整的问题
- fgetws和fread读取不同编码文本文件时的结果
- fread feof 文件尾读取重复的问题
- php读取任意长度的字符串函数fread
- C fread的文本模式与二进制模式的区别
- fread读取结构体注意事项
- c语言fread读取重复
- fread读取ASCII编码文件
- fread读取Unicode编码文件
- win平台C语言油槽通信
- Map 与 Multimap
- [代码实例][C语言]MD5算法
- 文章标题
- Chromium网页输入事件处理机制简要介绍和学习计划
- fread读取模式的选择
- 文章标题
- [代码实例][C++]MD5算法
- Java面向对象
- python两种方法实现从1000万个随机数中找出top n元素(附c语言版)
- Java之类的封装
- beego autorouter 使用遇到的问题
- biharm_solve_with_factor
- override 和 new