我在使用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是十进制,不是二进制~
fread读取与ftell显示字节数不一致的问题
答案:2 悬赏:60 手机版
解决时间 2021-03-20 18:50
- 提问者网友:流星是天使的眼泪
- 2021-03-20 12:36
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-03-20 13:52
应该是这样。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.
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.
全部回答
- 1楼网友:过活
- 2021-03-20 14:45
不明白啊 = =!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯