返回顶部

收藏

用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

相关聚客文章
  1. 博主 发表 2016-06-28 05:17:59 Bazel C++ 基础[翻译]
  2. 博主 发表 2011-11-03 16:00:00 C++ 语言基础
  3. thinkpc 发表 2016-03-04 13:55:30 c++&nbsp;11 map基础value排序
  4. pansunyou 发表 2014-11-30 02:51:00 C++通用跨数据库访问方案之一: 基础组件cdbc
  5. linux@linux.cn (linu 发表 2016-11-04 02:37:00 C++ 程序员 Protocol Buffers 基础指南
  6. tanglei 发表 2014-05-28 15:08:01 struct与class区别联系
  7. ImportNew读者投稿 发表 2013-03-14 09:48:51 Java到底是传引用还是传值?
  8. Dave Abrahams 发表 2011-11-04 08:16:16 Having it all: Pythy syntax for C++
  9. Herb Sutter 发表 2012-04-30 23:19:59 C++ Libraries: Casablanca
  10. Herb Sutter 发表 2012-09-18 20:53:01 C&B 2012 panel posted: Ask Us Anything!
  11. Herb Sutter 发表 2013-01-16 00:20:29 Videos: Panel, and C++ Concurrency
  12. Eric Battalio 发表 2013-03-11 18:34:00 Advanced Developers Conference 2013: C++

发表评论