用C++编写的文件压缩解压程序.docx
- 文档编号:3071016
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:25
- 大小:22.70KB
用C++编写的文件压缩解压程序.docx
《用C++编写的文件压缩解压程序.docx》由会员分享,可在线阅读,更多相关《用C++编写的文件压缩解压程序.docx(25页珍藏版)》请在冰豆网上搜索。
用C++编写的文件压缩解压程序
//-----------------------------------------------------------------------------
//huffmantreemain.cpp
//主界面
#include"huffmantree.h"
#include
#include
#include"compress1.h"
#include"Ceshi.h"
voidmenu()
{
cout< cout<<"\t\t ***操作菜单***\n\n"; cout<<"\t\t\t1压缩文件\n"; cout<<"\t\t\t2解压文件\n"; cout<<"\t\t\t3测试\n"; cout<<"\t\t\t0退出\n\n\n\n"; return; } intmain() { charmeiyong; cout<<"\n\n\n\n\n\n\n\n\n" <<"\t &*************** 压缩软件 **************&\n" <<"\t * *\n" <<"\t * *\n" <<"\t * *\n\n\n" <<"\t * 运行本软件之前,请务必仔细阅读使用指南 *" <<"\n\n\n\n\n\n\n\n\n\n"; cin.unsetf(ios: : skipws); cin>>meiyong; cin.setf(ios: : skipws); ifstreamfin("使用说明.txt",ios: : binary); fin.unsetf(ios: : skipws); while(fin>>meiyong) { cout< } cout< getch(); fin.setf(ios: : skipws); fin.close(); cout<<"\n\n\n\n\n\n"; cout<<"\n"; cout<<"\t\t*-------------------------------------------*\n"; cout<<"\t\t* 实验六: 霍夫曼树的应用 *\n"; cout<<"\t ******* *******\n"; cout<<"\t\t* 作者: gdgzzch 学号: 15201314 *\n"; cout<<"\t\t*-------------------------------------------*\n\n"; cout<<"\t\t 2005.11.16\n\n"; menu(); intchoice; cout<<"请选择操作: "; cin>>choice; while (1) { switch(choice) { case1: Compress(); break; case2: Decompress(); break; case3: Ceshi(); break; case0: cout<<"\n\n\t\t********* 谢谢您使用本软件,再见! ***********\n\n\n\n"; return1; default: cout<<"无此操作! \n\n"; } cout< "; cin>>choice; } return1; } //---------------------------------------------------------- //compress1.h //压缩 #ifndefCOMPRESS #defineCOMPRESS #include"huffmantree.h" #include #include #include #include //压缩函数 voidCompress() { unsignedcharch; inti,j,k; intCharnum[256];// unsignedcharChars[256]; //与下面共同使用,记录字符 intCharnums[256]; //记录对应字符的个数 intCharKinds; //字符种数 char[21]; //文件名不超过20个字符源文件名 char[21]; //目标文件名 int;//源文件大小 int;//压缩文件大小 HuffmanTree CharNameNodeNameNode[256]; //存储字符对应的霍夫曼编码 BinTreeNode Code*first=NULL; Code*last=NULL; ifstreamfilein; ofstream; cout<<"请输入你要压缩的文件的名字: "; cin>>; (); //open: if(! filein) { cout<<<<"不存在! \n"; (); return; } cout<<"请输入你的压缩文件的名字(*.HFM): "; //以后再用 cin>>; char[5]; intlen; len=strlen(); if(len<=4) { cout<<<<"文件的扩展名必须为HFM\n"; return; } for(i=len-1,j=3;i>=len-4;i--,j--) [j]=[i]; [4]='\0'; if(strcmp(,".HFM")! =0) { cout<<<<"文件的扩展名必须为HFM\n"; return; } // ****************************************************** for(i=0;i<256;i++) { Charnum[i]=0; //记录每一个字符的个数 Charnums[i]=0; //记录字符Char[i]的个数 } (ios: : skipws); ; //计算源文件大小 while(filein>>ch) { Charnum[unsignedint(ch)]++; //统计每种字符的频数 ; } (ios: : skipws); (); //close: // ****************************************************** j=0; for(i=0;i<256;i++) { if(Charnum[i]) { Chars[j]=unsignedchar(i); //统计源文件中存在的字符的 Charnums[j]=Charnum[i]; j++; } } CharKinds=j; // ****************************************************** ;//计算压缩文件大小 (); <<'0'<<''; //非法位数(之后修改) <<<<''; < ; for(i=0;i { < ;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编写 文件 压缩 解压 程序