开发者社区> 问答> 正文

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数据时,读出数据就会失败,请问这是怎么回事?

展开
收起
a123456678 2016-03-19 14:06:19 2138 0
1 条回答
写回答
取消 提交回答
  • fread 读完数据后,记得fseek移动文件指针。。

    2019-07-17 19:08:05
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载