fread函数的问题?
我使用fread函数从文件中读数据,函数如下:
bool __fastcall TICL::Open(AnsiString FileName)
{
if(!FileExists(FileName)) {
#ifdef ICLHDEBUG
MsgBox("文件“"+FileName+"”不存在!",ICO_ERROR);
#endif
return false;
}
FILE * fp;
if((fp=fopen(FileName.c_str(),"r"))==NULL) {
#ifdef ICLHDEBUG
MsgBox("打开文件“"+FileName+"”错误!",ICO_ERROR);
#endif
return false;
}
//文件打开成功
New(FileName);
filename = FileName;
fseek(fp,0,SEEK_SET);
fread((char *)&head,sizeof(ICLHEAD),1,fp);
if(strcmp(head.flag,ICLFLAG)!=0 || head.count>ICONMAX) {
#ifdef ICLHDEBUG
MsgBox("文件“"+FileName+"”类型错误!",ICO_ERROR);
#endif
return false;
}
ICLDATA p;
pBuf.set_length(head.count);
//读取数据到内存
for (int i=0;i<head.count;i++) {
fread((char *)&p,sizeof(ICLDATA),1,fp);
strcpy(pBuf[i].name,p.name);
memcpy(pBuf[i].buf,p.buf,ICONSIZE);
}
fclose(fp);
return fileisopen;
}
//------------------------------------------------------------------------
这句 fread((char *)&head,sizeof(ICLHEAD),1,fp);函数会自动将值为0x0D的字节去掉,只要遇到0x0D将忽略,所以读出来的内容不相同,没有文件中0x0D则正确,有则出现错误,请问这是何解,我将读出来的内容反复比较过,确实如此,那位有什么高见,给我指定一二。谢谢!