资源简介
实现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版-视频水印专家注册码
- 下一篇:三维模型树
相关资源
- PID C 语言算法DSP2812PWM
- js压缩工具,浏览器可自动解压,加快
- 班级档案管理系统
- C 程序设计学生宿舍管理系统
- TDC-GP2激光测距应用
- XX管理系统
- GZIP解压工具
- 中南民大数据结构-八皇后问题含实验
- 电磁环岛相关资料.zip
- 人机交互实验-命令行菜单界面
- 中缀表达式求值
- zlib的windows端应用工具
- zip文件压缩解压库文件整理过的
- 基于DSP的语音录放实验程序
- 一个随笔画程序
- 标准C实现FTP上传功能
- 用zlib库在内存中解压或压缩http会话中
- 中南大学单片机课设 密码锁
- 交通灯控制系统
- funcode坦克大战源码
- 数据结构与算法全集C源代码+详细注释
- 手把手教你做产品经理全套视频百度
- Open62541 win32 动态库
- Proteus8.9 VSM Studio WINAVR编译器仿真ATM
- 温度测试代码加仿真图protues
- 截图、抓屏程序纯C实现
- 征途_pak图包查看和解压工具
- C代码版本的HTTP POST上传文件/JSON
- 图书管理系统数据
- 进程调度 时间片轮转与优先级 作业调
评论
共有 条评论