资源简介
实现lzw数据压缩与解压 压缩比在2:1以上 实现无损压缩

代码片段和文件信息
/********************************************************************
**
** Copyright (c) 2005 曹道伟
**
** LZW 数据压缩/解压缩算法程序
**
** 2005-5-20
**
*****************************************************************************/
#include
#include
#define BITS 12 /* 设置每个常量的位数 */
#define HASHING_SHIFT BITS-8 /* 为12,13或者为14* */
#define MAX_VALUE (1 << BITS) - 1 /* 当在MS-DOS下选择14位*/
#define MAX_CODE MAX_VALUE - 1 /* 时,提示需要重新编译*/
#if BITS == 14
#define TABLE_SIZE 18041
#endif
#if BITS == 13
#define TABLE_SIZE 9029
#endif
#if BITS <= 12
#define TABLE_SIZE 5021
#endif
void *malloc();
int *code_value; /* 代码值数组 */
unsigned int *prefix_code; /* 用于保存压缩前的数据 */
unsigned char *append_character; /* 用于保存压缩后的数据 */
unsigned char decode_stack[4000]; /* 用于保存解压缩后的数据*/
char ok;
/********************************************************************
**
** 本程序从命令行获得文件名并压缩该文件
** 在C盘根目录下输出压缩后的文件
** 然后再解压缩,解压缩后的文件.
**
*************************************************************************/
main(int argc char *argv[])
{
FILE *input_file;
FILE *output_file;
FILE *lzw_file;
char input_file_name[81];
int select;
char output_filename[81];
char compressed_filename[81];
char expanded_filename[81];
/*
** 申请三个系统缓存用读取文件、压缩、解压缩时用.
*/
code_value=malloc(TABLE_SIZE*sizeof(unsigned int));
prefix_code=malloc(TABLE_SIZE*sizeof(unsigned int));
append_character=malloc(TABLE_SIZE*sizeof(unsigned char));
if (code_value==NULL || prefix_code==NULL || append_character==NULL)
{
printf(“Fatal error allocating table space!\n“);
/*
** exit();
*/
}
/*
** 获取文件名 打开文件 创建压缩后的文件.
*/
loop:
// clrscr();
// clreol();
printf(“**************************************************************\n“);
printf(“* Welcome to cao LZW arithmetic demo program! *\n“);
printf(“* 1.Compress file. *\n“);
printf(“* 2.Expand file. *\n“);
printf(“* 3.Exit. *\n“);
printf(“* Please select a opt. *\n“);
printf(“**************************************************************\n“);
scanf(“%d“&select);
/******************************************/
if(select == 1)
{
if (argc>1)
strcpy(input_file_nameargv[1]);
else
{
printf(“\nInput file name? “);
scanf(“%s“input_file_name);
printf(“\nCompressed file name? “);
scanf(“%s“compressed_filename);
}
input_file=fopen(input_file_name“rb“);
lzw_file=fopen(compressed_filename“wb“);
while (input_file==NULL || lzw_file==NULL)
{
printf(“Fatal error opening files!\n“);
printf(“\nInput file name? “);
scanf(“%s“input_file_name);
printf(“\nCompressed file name?“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2884 2009-06-04 10:21 lzw\1.txt
文件 172081 2009-06-04 16:57 lzw\Debug\lzw算法.exe
文件 191696 2009-06-04 16:57 lzw\Debug\lzw算法.ilk
文件 17039 2009-06-04 16:57 lzw\Debug\lzw算法.obj
文件 177496 2009-06-04 16:46 lzw\Debug\lzw算法.pch
文件 443392 2009-06-04 16:57 lzw\Debug\lzw算法.pdb
文件 33792 2009-06-04 17:00 lzw\Debug\vc60.idb
文件 53248 2009-06-04 16:57 lzw\Debug\vc60.pdb
文件 27136 2009-06-04 10:28 lzw\LZW.doc
文件 9197 2009-06-04 16:56 lzw\lzw算法.c
文件 3413 2009-06-04 10:14 lzw\lzw算法.dsp
文件 539 2009-06-04 10:25 lzw\lzw算法.dsw
文件 41984 2009-06-04 17:01 lzw\lzw算法.ncb
文件 48640 2009-06-04 17:01 lzw\lzw算法.opt
文件 248 2009-06-04 16:59 lzw\lzw算法.plg
目录 0 2009-06-05 10:07 lzw\Debug
目录 0 2009-06-05 10:07 lzw
----------- --------- ---------- ----- ----
1222785 17
- 上一篇:黑点软件汉化3.01版-视频水印专家注册码
- 下一篇:三维模型树
相关资源
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- lzw压缩,解压缩算法
- lz4压缩解压工具x64和x86
- Eclipse4.5汉化包 解压即可汉化
- USB Serial Port win7 64/32 驱动后缀丢失,
- C malloc函数用法
- 易语言压缩解压模块
- 解压加密的zip文件源码
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 嵌入式局域网聊天系统客户端
- 算法竞赛入门经典 第2版刘汝佳+高清
- 基于单片机的GPS定位及显示系统设计
- 链表实现通讯录管理系统
- PowerShell-6.2.1-win-x86.zip
- pl/0编译器 语法分析
- 源程序阅读与调试课程设计报告--学生
- 谁说程序员不浪漫?!基于easyX图形库
- 编译原理课设c编译器
- 百万常用暴力破解密码字典解压出来
- Xshell6+Xftp6绿色_破解版解压后点击绿色
- MCP3421 STM32 Driver
- ADS1100 STM32 Driver
- RAR解压密码破解,最新版
- fiddler 免安装
- pako gzip 压缩和解压缩支持中文
评论
共有 条评论