爱狗的贰狗子 2016-05-20 11:37 采纳率: 37.5%
浏览 1458
已采纳

读取文件时使用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重复,不知道什么原因,求原因及解决方法。

  • 写回答

1条回答 默认 最新

  • joaidgsd 2016-05-20 11:48
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 Windows 驱动开发版本疑问相关
  • ¥15 MAC 未能打开磁盘映像
  • ¥15 fastcap使用,二维导体输入问题
  • ¥15 hosts修改后不能访问
  • ¥15 关于化学反应速率C++编译问题/FLUENT
  • ¥20 Yolov5训练报错
  • ¥15 Unity发布gzip压缩的webgl之后让浏览器可以正常显示画面
  • ¥15 ASP.net Gridview插件数据更新失败问题
  • ¥15 有没有人知道这种提示怎么关?现在不做ts项目了不知道咋关了,求解,现在我以前的js项目都是这种提示了
  • ¥15 为什么mysql做了碎片化处理data_free还是很高