连续调用fread后文件指针的位置会乱跳,这是怎么回事啊

我先打开一个文件,里面是unsignedshort型数据,本人先定位文件指针到任意指定位置(例如1504字节处),然后连续使用fread函数读三次,每次读两个字节,并且在... 我先打开一个文件,里面是unsigned short型数据,本人先定位文件指针到任意指定位置(例如1504字节处),然后连续使用fread函数读三次,每次读两个字节,并且在读完后用ftell函数检测文件指针的位置,然后将其存入int 变量test2,test4,test5中,理论上来说,因为是连续读取,fread函数每次读两个字节后,文件指针也跟着移动两字节,所以理论上各个值应为test2=1506;test4=1508;test5=1510。可实际结果是test2=1506(也就是说test2的值是对的);但是test4=2016;test5=5602;完全不是每次都增长两字节,请大侠们帮我分析一下原因错在哪吧,打开的这个文件共有277504字节。以下是我的程序代码:
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle ="打开GSSI探地雷达数据(*.DZT)";
fileDlg.m_ofn.lpstrFilter="GSSI Files(*.DZT)\0*.DZT\0All Files(*.*)\0*.*\0\0";

if(IDOK==fileDlg.DoModal())
{

pFile=fopen(fileDlg.GetFileName(),"r");
fseek(pFile,1024+480,SEEK_SET);
unsigned short test,test1,test3;
int test2,test4,test5;
fread(&test,2,1,pFile);
test2=ftell(pFile);
fread(&test1,2,1,pFile);
test4=ftell(pFile);
fread(&test3,2,1,pFile);
test5=ftell(pFile);
fclose(pFile);
麻烦大侠们分析一下为什么test4不等于1508;test5不等于1510啊,谢谢了
展开
 我来答
happyss12
2015-03-15
知道答主
回答量:3
采纳率:0%
帮助的人:2.6万
展开全部
fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。 
飞来的钻石314
2023-06-28
知道答主
回答量:10
采纳率:0%
帮助的人:3588
展开全部
我也是这个问题。。不过我解决了。
打开文件时把"r"换成"rb"即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式