我自己自定义了一个结构体
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数据时,读出数据就会失败,请问这是怎么回事?