永发信息网

fread读取与ftell显示字节数不一致的问题

答案:2  悬赏:60  手机版
解决时间 2021-03-20 18:50
我在使用VC6.0编程,遇到这个问题。

在读一个二进制文件的时候,用fread已读720个字节,ftell定位时也显示是在720字节处,然后再用fread读的时候,先读一个int型(四个字节),再连续读四个char型(每个一个字节),在读完第二个char型将要读第三个char的时候,ftell理论上应该是在726字节,结果却是727自己,也就是说读第二个char的时候一下ftell跳过了两个字节,不过读到的四个char型的数据还是正确的,就是ftell只是的有问题,求高手可以给出原因!!
二进制文件720字节开始的内容为(16进制表示):00 00 00 02 12 0A 12 14,最后读到的结果是:33554432(二进制) 0x12 0xa 0x12 0x14;数据都是正确的,就是不知道为什么ftell会给出的位置是:724 725 727 728 729.为啥不是726?是因为第二个char读入的数据0xa吗?

33554432是十进制,不是二进制~
最佳答案
应该是这样。0x0a等于字符\n,ftell把它当成字符处理了.

StackOverFlow上有人碰到过:
'\n' can be represented with two characters, so there is the skew you are getting.
If you don't want that to happen, open the finaly in binary mode.

ftell的说明:
or binary streams, the value returned corresponds to the number of bytes from the beginning of the file. For text streams, the value is not guaranteed to be the exact number of bytes from the beginning of the file, but the value returned can still be used to restore the position indicator to this position using fseek.
全部回答
不明白啊 = =!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我喜欢一个女生,可是她是混社会的。不问怎么
挑剔的反义词是什么
以霸开头的句子,谢谢
君豪超市地址在哪,我要去那里办事
如何委婉啊拒绝应聘者
你不用说话那么啰嗦,那是我的隐私,你就那么
tjger的同音词是什么
广东工业大学是几本?学风怎样?
生态系统中生产者、消费者和分解者之间是相互
创业路/海月东街(路口)这个地址在什么地方,
发动机的最大功率和最大扭矩是什么意思?
指纤纤 衷曲复牵连 什么意思
糖坊甜品海门店地址有知道的么?有点事想过去
英国的全称是什么意思
冰箱上面半个雪花加下面三点红色灯亮起是什么
推荐资讯
乌日图达乌怎么去啊,有知道地址的么
在纸上画画画的画能代表自己的名字
关于 明 这个字的两个字网名
王宝强孩子鉴定结果已经曝光,孩子是谁的只有
女孩起名曦楠的寓意
和混油白一样颜色的自喷漆里面的白色叫什么白
闰年为什么有29天,而平年为什么只有28天
天涯明月刀蔺南怎么找啊,自动不能寻路,一点
①不知道它从哪里轻轻飘来,也不知道它又向何
心肌酶高是怎么回事,什么是心肌酶
不知道谁给我在亚马逊买了东西,现在东西到了,
红警大战防守一次扩建80围墙咋么开双口
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?