连续调用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啊,谢谢了 展开
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啊,谢谢了 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询