zlp1992 2014-04-13 12:51 采纳率: 33.3%
浏览 2257

C语言中的fread与fwrite问题

我自己自定义了一个结构体
typedef struct histgramData
{
CString picPath;//图片路径
CvHistogram value;//图片的直方图特征
}CHistogramData;
然后使用fwrite将其写入文件
FILE *fp;
if((fp=fopen("histogram.dat","a+b"))==NULL)//以追加方式打开二进制文件
{return false;}
CHistogramData hd;
hd.value=value;
hd.picPath=picPath;
fwrite(&hd,sizeof(hd),1,fp);
fclose(fp);
接着我用fread函数将其中的数据读出
FILE*fp;
CHistogramData histData;//用于保存从文件中读出的模板
CHistogram hist;//直方图对象
fp=fopen("histogram.dat","rb");
int count=0;
while(count<=9 && (fread(&histData,sizeof(histData),1,fp)!=0))//先一次性读取前十个模板数据
{
double similarity=hist.cmpHistogram(histData.value,*value);
CString temp;
temp.Format("%s%lf",histData.picPath,similarity);
MessageBox(temp);
count++;//计数器加1
}
问题是这样的,当我第一次写入一个CHistogramData数据时,能够正常读出来,但当我再次去读时,就出问题了,我怀疑是不是第一次读使用fread对原文件有影响;第二个问题是如果我第一次一次性写入多个CHistogramData数据时,读出数据就会失败,请问这是怎么回事?

  • 写回答

1条回答 默认 最新

  • shen_wei 2015-10-14 06:18
    关注

    fread 读完数据后,记得fseek移动文件指针。。

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制