c语言使用zlib实现文本字符的gzip压缩与gzip解压缩
网络上找到的好多方法在解压缩字符串的时候会丢失字符,这里是解决方法:
http://stackoverflow.com/questions/21186535/compressing-decompressing-char-array-using-zlib-some-characters-missing
基于此,笔者修改了一下,由于是初学者,只按照编译器不报错的原则修改了一下,能运行
打开vc++6.0新建控制台程序程序,配置好zdll.lib,把zlib1.dll放置到合适的位置
主程序main.cpp如下
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "zlib.h" int main()
{
const char *istream = "some foo汉字";
uLong srcLen = strlen(istream)+; // +1 for the trailing `\0`
uLong destLen = compressBound(srcLen); // this is how you should estimate size
// needed for the buffer
unsigned char* ostream = (unsigned char*)malloc(destLen);
int res = compress(ostream, &destLen, (const unsigned char *)istream, srcLen);
// destLen is now the size of actuall buffer needed for compression
// you don't want to uncompress whole buffer later, just the used part
if(res == Z_BUF_ERROR){
printf("Buffer was too small!\n");
return ;
}
if(res == Z_MEM_ERROR){
printf("Not enough memory for compression!\n");
return ;
} unsigned char *i2stream = ostream;
char* o2stream = (char *)malloc(srcLen);
uLong destLen2 = destLen; //destLen is the actual size of the compressed buffer
int des = uncompress((unsigned char *)o2stream, &srcLen, i2stream, destLen2);
printf("%s\n", o2stream);
return ;
}
c语言使用zlib实现文本字符的gzip压缩与gzip解压缩的更多相关文章
- 饼干是这样压缩的——PHP使用zlib扩展实现页面GZIP压缩输出
饼干是这样压缩的——PHP使用zlib扩展实现页面GZIP压缩输出 GZIP(GNU-ZIP)是一种压缩技术.经过GZIP压缩后页面大小可以变为原来的30%甚至更小.这样用户浏览的时候就会感觉很爽很愉 ...
- Swift语言指南(十)--字符串与字符
原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...
- 【Windows编程】系列第三篇:文本字符输出
上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接 ...
- (转)C语言16进制输出字符型变量问题
最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char ...
- 比较java与c语言中数字转换成字符的不同
java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...
- emWin显示文本字符-【worldsing笔记】
在emWin显示文本字符还是容易的,提供了各种不同的接口,下面是有关于字符显示的常用的用法,可以直接复制到VS2008的模拟ucGui(emWin模拟工程)中运行: 工程代码下载:1.emWin5.2 ...
- api (三)文本字符输出 (转)
在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接口(GDI)进行的,Windows的三大核心组件之一的GDI32.dll封装了所有的文本和 ...
- R语言csv与txt文本读入区分(sep参数)
R语言csv与txt文本读入区分 R语言用来处理数据很方便,而处理数据的第一步是把数据读入内存空间,平时最常用的文本数据储存格式有两种: 一种是CSV(逗号分隔符文本)另一种是TXT(Tab分隔符或空 ...
- C语言中以十六进制输出字符型变量会出现'ffffff"的问题
最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char ...
随机推荐
- SQL Server 2012 创建数据库快照
不是所有的MSSQL数据库版本都支持数据库快照,只有Enterprise版本的才支持. 在其他版本上,以Business Intelligence Edition版本为例,创建快照时,会报如下错误 消 ...
- iOS-浅谈runtime运行时机制
一.首先,从 runtime.h头文件中找到对 class 与 object 的定义 /// An opaque type that represents an Objective-C cla ...
- [jQuery]html(),text(),val()方法的区别
1.HTML html():取得第一个匹配元素的html内容.这个函数不能用于XML文档.但可以用于XHTML文档 html(val):设置每一个匹配元素的html内容.这个函数不能用于XML文档.但 ...
- ADF_Controller系列3_通过创建ADF Menu作为页面向导(Part1)
2015-02-15 Created By BaoXinjian
- Windows,caffe 仅cpu
http://caffe.berkeleyvision.org/installation.html 按着官网的步骤:https://github.com/BVLC/caffe/tree/windows ...
- const,static,volatile
1.static 作用 在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的 ...
- 编译错误:error: multi-line comment
编译错误:error: multi-line comment 这其实是有宏定义的地方的问题. 原因是宏定义非一行,在宏定义的行尾使用 '\' 连接符导致的. 所以这个地方的注释使用 /* */ ...
- [ActionScript 3.0] NetConnection建立客户端与服务器的双向连接
一个客户端与服务器之间的接口测试的工具 <?xml version="1.0" encoding="utf-8"?> <!--- - - - ...
- windows 装 Crypto.Cipher
python 2.7 先去官网下载,https://www.dlitz.net/software/pycrypto/ 回来装这个,http://download.csdn.net/download/d ...
- Python从题目中学习:random() module
最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...