怎么实现读取一个二进制文件里面的内容,把每个字节保存在一个无符号的整形数组里面?

gnolk 2018-10-11 12:48:36
大概意思就是:如果二进制文件f有100000个字节,就生成一个无符号整形数组a长度也是100000,里面的值是 0~255的值

作为新手,尝试了很多办法,都不行,我想高手应该很简单吧?
求具体代码,谢谢
...全文
322 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2018-11-10
  • 打赏
  • 举报
回复
The argument shflag is a constant expression consisting of one of the following manifest constants, defined in Share.h. Term Definition _SH_COMPAT Sets Compatibility mode for 16-bit applications. _SH_DENYNO Permits read and write access. _SH_DENYRD Denies read access to the file. _SH_DENYRW Denies read and write access to the file. _SH_DENYWR Denies write access to the file. 第三个参数, 看MSDN帮助文档中说的, 是需要Share.h头文件. 如果没有, 你可以直接用fopen, 老版本的c函数, FILE *pFile = fopen("1.data","rb");
gnolk 2018-10-11
  • 打赏
  • 举报
回复
引用 3 楼 xiaohuh421 的回复:
1楼的代码已经解决了你的问题了.

unsigned char *buff = new unsigned char[100000];
FILE* fp = _fsopen("1.dat","rb",_SH_DENYWR);
fread(buff,1,100000,fp);
fclose(fp);
请问_SH_DENYWR 这个参数是怎么意思 我调试了一下 报错
英雄@末路 2018-10-11
  • 打赏
  • 举报
回复
首先要获取文件长度, fopen, fseek,
然后根据获取的文件长度分配缓冲, malloc
接着把文件中的内容读到分配的缓冲, fread
最后记得把文件关了, fclose
差不多这几个函数吧
xiaohuh421 2018-10-11
  • 打赏
  • 举报
回复
1楼的代码已经解决了你的问题了. unsigned char *buff = new unsigned char[100000]; FILE* fp = _fsopen("1.dat","rb",_SH_DENYWR); fread(buff,1,100000,fp); fclose(fp);
gnolk 2018-10-11
  • 打赏
  • 举报
回复
引用 1 楼 Slzde_sub 的回复:


你确定不是unsigned char? 而是DWORD ?


FILE* fp = _fsopen("1.dat","rb",_SH_DENYWR);
fread(buff,1,100000,fp);


要unsigned char 这个的整形,谢谢

69,382

社区成员

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

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