正常读取二进制文件可以用fread,具体如下:
FILE *pFile=fopen("F:\\SqlServer注释.zip","rb");
char *pBuf;
fseek(pFile,0,SEEK_END); //定位到文件末尾
int len=ftell(pFile); //求文件长度
pBuf=new char[len+1];
rewind(pFile); //重新定位指针到文件开始处
fread(pBuf,0,len,pFile);
fclose(pFile);
如果文件读写的长度大于65535字节,则使用CArchive类进行循环读取。
CFileSourceFile;//数据文件
CStringSourceData;//定义一临时变量保存一条记录
SourceFile.Open(.......);
CArchivear(&SourceFile,CArchive::load);
while(NULL!=ar.ReadString(SourceData))//循环读取文件,直到文件结束
{
if(SourceData=="文件头部"||SourceData=="")
continue;//跳过文件头部的提示信息
//分析并填充//
}
int R;
CStringR=SourceData.Left(SourceData.Find("1"));//截取1前面的字符串
SourceData=SourceData.Righ(SourceData.GetLength()-SourceData.Find("1")-1);//将1以及前面的字符删除。
重复上面分析过程,直到记录末尾。