📄 huffmanzip.cpp
字号:
/*----------------------------程序说明---------------------------------*/
//本程序根据Huffman算法对仅包含ASCII码的*.txt文件进行压缩,压缩为扩展名//
//为*.huf的二进制文件,并在压缩过程之前将huffman编码写入二进制文件,压缩//
//率不大,大约为60%~80%之间,对特别小的文件不宜压缩,甚至会使文件变大,//
//程序还可读取*.huf文件,根据写入的huffman编码,将*.huf文件还原为*.txt文//
//件,操作根据程序中的提示进行,此处不再赘语,谢谢。 //
// 李文 03281042 BNU信息 //
/*---------------------------------------------------------------------*/
#include "stdafx.h"
#include "Huffmanzip.h"
int main()
{
int nLenth,nMark,nReturnMark,nGetMark;
char Sign,sAdress[256];
nGetMark = 1;
while(1)
{
if(nGetMark)
{
printf("请选择,你想要:\n1.压缩文件(in English,*.txt)\t2.解压文件(*.dat)\t3.退出程序\n");
nGetMark = 0;
}
Sign=getch();
if(Sign=='1')
{
nMark = 0;
do
{
printf("请输入被压缩文件的目录(不超过255个字符):\n");
fflush(stdin);
scanf("%s",sAdress);
nLenth = strlen(sAdress);
if(nLenth>3&&sAdress[nLenth-1]=='t'&&sAdress[nLenth-2]=='x'&&sAdress[nLenth-3]=='t')
nMark = 1;
}while(nMark == 0);
nReturnMark = fnCompress(sAdress);
if(nReturnMark == -1)//未找到文件
nGetMark = 1;
else if(!nReturnMark)
{
printf("Sorry!!压缩失败!!请按任意键终止程序!!");
getch();
return 0;
}
else
{
printf("压缩完毕!!\n");
nGetMark = 1;
}
}
else if(Sign=='2')
{
nMark = 0;
do
{
printf("请输入被解压文件的目录(不超过255个字符):\n");
fflush(stdin);
scanf("%s",sAdress);
nLenth = strlen(sAdress);
if(nLenth>3&&sAdress[nLenth-1]=='f'&&sAdress[nLenth-2]=='u'&&sAdress[nLenth-3]=='h')
nMark = 1;
}while(nMark == 0);
nReturnMark = fnDecompress(sAdress);
if(nReturnMark == -1)//未找到文件
nGetMark = 1;
else if(!nReturnMark)
{
printf("Sorry!!解压失败!!请按任意键终止程序!!");
getch();
return 0;
}
else
{
printf("解压完毕!!\n");
nGetMark = 1;
}
}
else if(Sign == '3')
return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -