VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 303|回复: 3

求助一个读取文件的问题,请大家赐教。

[复制链接]
34_avatar_middle
最佳答案
0 
在线会员 发表于 2021-4-20 14:27:40 | 显示全部楼层 |阅读模式
我写了一段代码,如下:
        HANDLE hFile = CreateFile(L"D:\\123.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
        if (hFile == INVALID_HANDLE_VALUE)
        {
                printf("open error\n");
                return;
        }
        DWORD filesize = GetFileSize(hFile, NULL);
        if (filesize == INVALID_FILE_SIZE)
        {
                printf("filesize error\n");
                return;
        }
        char *buff = (char *)malloc(filesize+1);
        memset(buff, 0, filesize + 1);
        DWORD dwRead = 0;
        if (!ReadFile(hFile, buff, filesize, &dwRead, NULL))
        {
                printf("read error\n");
                return;
        }
        int ilen = strlen(buff);
        return;
我的文件123.txt中内容是12345,对于txt文件,这段代码似乎没有问题,因为filesize的值是5,读文件后dwRead 也是5,当然ilen 也是5.
现在我有一个问题,如果我的文件是个图片文件,比如:124.jpg,问题是filesize的值是890207,读文件后dwRead 也是890207,但是ilen  是10,不知道是什么原因?因为我想在网络中传图片文件,但是这个buf为什么只有10,而没有读890207个字节到缓冲区。
如果我换成个125.mp4文件,filesize的值是1322091,读文件后dwRead 也是1322091,但是ilen  是0,我不知道为什么视频和图片文件的数据读不到缓冲区,是不是ReadFile函数不支持读图片和视频?
还有我在帖子https://www.cctry.com/forum.php? ... p;page=1#pid1258319我看就是用ReadFile函数读取文件内容的啊。小弟在此请各位帮我看看问题出在哪?小弟非常感谢




上一篇:注册表管理
下一篇:谁有windowsAPI函数 chm版本
43_avatar_middle
最佳答案
3 
online_vip 发表于 2021-4-20 15:28:02 | 显示全部楼层
strlen(buff);  是取字符串长度,证明你的buff截止\0前有10个有效字符

此处应该 sizeof(buff);
34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-4-21 18:08:34 | 显示全部楼层
caicaiwuguo 发表于 2021-4-20 15:28
strlen(buff);  是取字符串长度,证明你的buff截止\0前有10个有效字符

此处应该 sizeof(buff);

你好!你说的这个不对啊。sizeof(buff)的结果是4,因为buff是个指针变量,他的字节数是4,所以sizeof(buff)的值一直是4,如果用sizeof(*buff)我试了也不能得到buff所指内容的大小,因为不管是图片还是视频sizeof(*buff)的值都是1
70_avatar_middle
最佳答案
49 
在线会员 发表于 2021-4-22 09:29:38 | 显示全部楼层
david2020 发表于 2021-4-21 18:08
你好!你说的这个不对啊。sizeof(buff)的结果是4,因为buff是个指针变量,他的字节数是4,所以sizeof(buf ...

直接用 dwRead就行了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-10-19 03:27

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表