Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1063213
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: C/C++

2009-12-07 10:52:16

#include <zlib.h>
#include <zconf.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char **argv[])
{
    char msg[1000]="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n";
    char buf[1000];
    char result[1000];
    unsigned long len, lenresult;

    printf("msg size:%d\n", strlen(msg));
    len = 1000;
    compress(buf, &len, msg, strlen(msg) );
    printf("buf size:%d\n", len);

    lenresult=1000;
    uncompress(result,&lenresult, buf, len );
    
    printf("result size:%d\n", lenresult);
    printf("result:%s\n", result);
    return 0;
}

编译:

LIB = -lz
all : clean tt
.PHONY : all
clean :
    -rm *.o tt
tt : tt.o
    cc -g -o tt tt.o $(LIB)
tt.o : tt.c
    cc -g -c tt.c


程序中需要注意几个地方:

1. 使用compress 与 uncompress之前,必须为目标长度设初值,而且该值要大于你需要解压或者压缩的结果长度,不然会出问题。

2. 编译需要-lz参数。

阅读(1331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~