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

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

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵