⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffmanzip.cpp

📁 利用Huffman编码法做的一个文本文件压缩程序
💻 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 + -