读取文件时使用fseek遇到一些问题,求帮助。

#include
#include
int main(int argc, char** argv) {
int i=0,j=0;
long end=0;
FILE *fp;
unsigned short int idata[10];

if(fp!=NULL){
fp=fopen("D:\3","rb");//打开文件

for(j=0;j<2;j++){
fseek(fp,end,SEEK_SET);//每次读取前指定指针位置
end=end+10;//每次将指针向后移动10
fread(idata,2,10,fp);//读取数据储存在iadata[]中

for(i=0;i<10;i++){
printf("%d\t%d\n",idata[i],i);} //输出读取的数据
}
}
fclose(fp);
return 0;
}

读取数据时指针虽然移动了,但是总会出现一些数据重复,比如在前20个数据中,前10个数据正确,但第10-15个数据会和6-10重复,不知道什么原因,求原因及解决方法。

将end每次加20,你一次读了10个元素,每个元素是2个字节,也就是20个字节,而你定位的时候你是定位在开始位置向后偏移10个字节处