爱狗的贰狗子 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个字节处

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

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)