c语言打包与解包程序

c语言打包与解包程序

ID:8969436

大小:50.50 KB

页数:7页

时间:2018-04-13

c语言打包与解包程序_第1页
c语言打包与解包程序_第2页
c语言打包与解包程序_第3页
c语言打包与解包程序_第4页
c语言打包与解包程序_第5页
资源描述:

《c语言打包与解包程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、//测试通过#include#include#includetypedefunsignedintuint;typedefunsignedcharbyte;//包文件中最大可容纳的文件个数#defineMAX_FILE_COUNT10//全局包文件指针FILE*g_pMasFile=NULL;//资源包文件头结构typedefstructSMaseFileHeader{uintuFileFlag;//包文件头标记:'MASE'uintuFileCount;//包内文件个数uintuFil

2、eListOfs;//文件列表偏移uintuMaxFileCount;//最大子文件个数uintuFileSize;//包文件的大小}MaseHeader;//包内文件信息结构typedefstructSFilesMessage{uintuFileOfs;//本文件在包内的偏移uintuFileSize;//本文件的大小charszFileName[260];//本文件的路径}FilesMsg;//打开包文件intOpenMasFile(constchar*path,constbyteonlyOpen){uintuWriteCount;//写

3、入文件信息次数bytebIsNew=0;//是否新建的MaseHeaderheader;//文件头结构定义FilesMsgmsg;//文件信息结构定义g_pMasFile=fopen(path,"rb");//用来判断是否存在if(g_pMasFile==NULL){if(onlyOpen==1)//只打开不新建return-1;bIsNew=1;g_pMasFile=fopen(path,"wb");if(g_pMasFile==NULL)return-1;}//先关闭,然后在用"rb+"方式打开二进制读写打开文件fclose(g_pMas

4、File);g_pMasFile=fopen(path,"rb+");if(g_pMasFile==NULL)return-1;if(bIsNew==1)//新建的文件{header.uFileFlag='ESAM';header.uFileCount=0;header.uFileListOfs=sizeof(MaseHeader);//紧跟着就是文件列表header.uMaxFileCount=MAX_FILE_COUNT;header.uFileSize=sizeof(MaseHeader)+(MAX_FILE_COUNT*sizeof(

5、FilesMsg));//写入头信息fwrite(&header,sizeof(MaseHeader),1,g_pMasFile);memset(&msg,0,sizeof(FilesMsg));uWriteCount=MAX_FILE_COUNT;//写入文件列表用0占位while(uWriteCount--)fwrite(&msg,sizeof(FilesMsg),1,g_pMasFile);}else//文件存在{//则读取头文件信息fread(&header,sizeof(MaseHeader),1,g_pMasFile);}//检查

6、文件头标记if(header.uFileFlag!='ESAM'){fclose(g_pMasFile);printf("文件头标记不对,错误!");return-1;}//检查数据是否完整if(header.uMaxFileCount!=MAX_FILE_COUNT){fclose(g_pMasFile);printf("数据不完整,错误!");return-1;}return0;}//写文件到包里intWriteFileToPak(constchar*path){FilesMsgfileMsg;//此文件的文件信息结构MaseHe

7、aderheader;//包文件头结构定义uintuFileSize;uintuFileListEndOfs;byte*pBuff;FILE*pFile=NULL;if(g_pMasFile==NULL)return-1;memset(&fileMsg,0,sizeof(FilesMsg));fseek(g_pMasFile,0,SEEK_SET);//定位到文件头,读取头文件信息//则读取头文件信息fread(&header,sizeof(MaseHeader),1,g_pMasFile);uFileListEndOfs=header.uF

8、ileCount*sizeof(FilesMsg)+header.uFileListOfs;pFile=fopen(path,"rb");if(pFile==NUL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。