返回顶部

收藏

用zlib1g解压 memcache 已经压缩的数据

更多

平台:Linux gaojie 3.2.0-33-generic-pae #52-Ubuntu SMP Thu Oct 18 16:39:21 UTC 2012 i686 i686 i386 GNU/Linux

依赖:zlib1g-dev

#include <stdio.h>
#include <zlib.h>
#include <zlibdefs.h>

int main(int argc, char *argv[]) {

    //该文件大小是319
    size_t f_size = 319;
    //打开压缩文件,为了代码简洁, 已经将memcached压缩(gzip)的数据已经放在一个文件里
    FILE * fp = fopen("/home/gaojie/xx.zip", "r+");
        //memcache取出来的数据
    char ibuf[f_size];
    size_t rc0 = fread(ibuf, f_size, 1, fp);
    printf("fread:%d\\n:", rc0);

    //创建一个临时文件
    FILE * tFile = tmpfile();
    fwrite(ibuf, 1, f_size, tFile);
    fseek(tFile, 0, SEEK_SET);
    //获取fd
    int mf_fd = fileno(tFile);

    //打开文件
    gzFile gzf = gzdopen(mf_fd, "r+");
    printf("gzf:%p\\n", gzf);
    char buf[4096] = { 0 };
    int rc = gzread(gzf, buf, 4096);
    printf("gzread:%d\\n", rc);

    printf("gzread:%s\\n", buf);

    return 0;

}
//该片段来自于http://outofmemory.cn

标签:c++,基础

收藏

0人收藏

支持

0

反对

0

发表评论