返回顶部

收藏

用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. 博主 发表 2011-11-03 16:00:00 C++ 语言基础
  2. thinkpc 发表 2016-03-04 13:55:30 c++&nbsp;11 map基础value排序
  3. pansunyou 发表 2014-11-30 02:51:00 C++通用跨数据库访问方案之一: 基础组件cdbc
  4. linux@linux.cn (linu 发表 2016-11-04 02:37:00 C++ 程序员 Protocol Buffers 基础指南
  5. tanglei 发表 2014-05-28 15:08:01 struct与class区别联系
  6. 博主 发表 2016-06-28 05:17:59 Bazel C++ 基础[翻译]
  7. Herb Sutter 发表 2013-03-14 15:50:07 Words of wisdom: Bjarne Stroustrup
  8. SumitMSFT 发表 2013-03-22 22:12:00 Visual C++ Developer Survey
  9. bystander 发表 2013-04-11 10:50:25 模板栈以及中缀表达式求值(C++实现)
  10. mortoray 发表 2013-05-09 10:22:13 How to catch a “return” statement
  11. Qiang 发表 2011-09-08 14:06:00 Lexing Python Indentation using Spirit.Lex
  12. 博主 发表 2013-06-15 20:33:32 CloudStack云基础架构的一些概念

发表评论