读的是exe可执行文件 fread返回值是1024,但是buf里面怎么没有内容??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读的是exe可执行文件 fread返回值是1024,但是buf里面怎么没有内容??相关的知识,希望对你有一定的参考价值。
那你的意思就是说里面有内容,只是头一个字符是0?那我有没有办法把这个buf赋值给一个string类对象?
如果你是输出buf的内容,这可能是行不通的,因为只要第一个字节是0,则会输出空字符串可以在fread调用语句的下一语句设置断点(具体方法是按F9),然后按F5调试
在buf上点击右键--->添加监视,你将会看到buf的内存,前提条件是buf是一个数组
如果buf是动态内存,则需要其他方法 参考技术A buf是只要不全是0就是有值.
不能当做字符串看的 参考技术B fread第一个参数应该指向一块至少有第二个参数*第三个参数那么多bytes的内存,fread会把读出的内容存到这里。
你的返回值是1024说明肯定读出来了,我不知道你说的没内容是什么意思,如果你用的是clear alloc分配的内存,那么有可能你读的那一块文件内容就是00 00这样的?
fread() 中的“短项计数”是啥?
【中文标题】fread() 中的“短项计数”是啥?【英文标题】:What is "short item count" in fread()?fread() 中的“短项计数”是什么? 【发布时间】:2011-09-14 09:33:08 【问题描述】:当我是“男人恐惧”时,我得到了这个:
返回值 fread() 和 fwrite() 返回成功读取或写入的项目数(即,不是字符数)。如果出现错误 发生,或结束- 到达文件,返回值是一个短项目计数(或零)。
fread() 不区分文件结尾和错误,调用者必须使用 feof(3) 和 ferror(3) 来确定发生了什么。
所以我的问题是如何理解“短项计数”。请忍受我的英语。为什么这里涉及类型“short”?你能举个例子说明“短项目数”是什么样的吗?谢谢。
【问题讨论】:
【参考方案1】:如果你想要 4,而你有 3,那么你就做空了 1。
【讨论】:
如果你想要 4 而你有 3,fread 将返回 3。“short”从哪里来?如果措辞有意义,它将返回 1。但另一方面,这将是一个无意义的 API。 @Lundin:3 比 4 短。措辞很好。 你矮1,你不是矮3。英文单词short,在这种情况下,只能指缺失项目的数量。一个说英语的人会假设“短项计数”会计算您短项的数量。与“成功读取项目计数器”相反。 你不是矮3,而是3是矮。【参考方案2】:fread 手册页中“short”的意思不是指数据类型。
在这种情况下,“短”表示“低于预期”。如果 fread() 期望读取 4 个对象,但只读取 3 个,它将返回值 3。
我认为应该重写手册页说: "如果发生错误,或到达文件结尾,则返回值是在发生错误或 EOF 之前成功读取或写入的项目数。
【讨论】:
同意手册页写得不好,需要重写。我知道 fread 是如何工作的,而且我的英语还不错,但我听不懂。 那么,我在哪里提交拉取请求来更改它?以上是关于读的是exe可执行文件 fread返回值是1024,但是buf里面怎么没有内容??的主要内容,如果未能解决你的问题,请参考以下文章