温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

zlib中gzip file常用函数有哪些

发布时间:2021-10-14 09:40:35 来源:亿速云 阅读:188 作者:柒染 栏目:编程语言

这篇文章将为大家详细讲解有关zlib中gzip file常用函数有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

打开关闭函数:gzopen、gzclose

写gzip file函数:gzwrite、gzputs、gzputc、gzprintf

读gzip file函数:gzread、gzgets、gzgetc

其他函数:gztell、gzseek、gzrewind

两个不太好理解的函数:gzungetc、gzoffset

代码如下:

#include <iostream>
#include <string>

#include <zlib.h>
#include <zconf.h>

using namespace std;


void main(int argc, char *argv[])
{
	//ab每次写的时候追加,wb每次写会覆盖之前的内容
	gzFile gzfp = gzopen("test.gz","rb");         
	if(NULL == gzfp)
	{
		cout<<"Fail to open file."<<endl;
		return;
	}

	/*******************************写gz文件*******************************/
	
	//当前写的位置为0,
	//write时,只能向后seek
	cout<<"gztell:"<<gztell(gzfp)<<endl;           
	gzseek(gzfp, 10, 0);                           
	cout<<"gztell:"<<gztell(gzfp)<<endl;


	//gzwrite返回值,是写入的字节数,压缩前的字节数
	char buf[20] = "1abcdefghijklmn";
	int len = strlen(buf);
	cout<<"gzwrite:"<<gzwrite(gzfp, buf, len)<<endl;  


	//gzputs返回值,是写入的字节数,压缩前的字节数
	cout<<"gzputs:"<<gzputs(gzfp, "zxc")<<endl;       


	//gzputs返回值,是字符'b'的值
	cout<<"gzputc:"<<gzputc(gzfp, 'b')<<endl;         


	//gzprintf
	cout<<"gzprintf:"<<gzprintf(gzfp, "%d,%s", 99, "efg")<<endl;
	

	/*******************************读gz文件*******************************/
	
	//gzread
	gzseek(gzfp, 10, 0);
	//gzungetc放一个字符到流中,下次读取时,先读这个字符。
	//gzungetc后,调用gzseek、gzrewind,gzungetc将失效。
	gzungetc('z', gzfp);                               
	                                                   
	//gzread返回值,是实际读取的字节数,解压缩后的字节数
	//如果在写入时调用了,gzseek了10个字节,那么这10个字节填充0。读取时遇到这个10个字节时,会认为是字符串的结束。
	char sz_read_buf[100] = {0};                       
	gzread(gzfp, sz_read_buf, 10);                  
	cout<<"gzread:"<<sz_read_buf<<endl;                
	

	//gzgets
	gzseek(gzfp, 10, 0);

	memset(sz_read_buf, 0, 100);
	gzgets(gzfp, sz_read_buf, 99);
	cout<<"gzgets:"<<sz_read_buf<<endl;


	//gzgetc
	gzseek(gzfp, 14, 0);
	gzrewind(gzfp);
	
	cout<<"gzgetc:"<<gzgetc(gzfp)<<endl;
	

	//gzoffset
	//返回压缩文件中将要读或写的位置。
	//举例:第一次写入25个字节,压缩后44;
	//      第二次写入35个字节,2次写入压缩后91。
	//      
	//      当从头读取10个字节时,gzoffset为44
	//      当从头读取30个字节时,gzoffset为91
	cout<<"gzoffset:"<<gzoffset(gzfp)<<endl;         
	
	
	gzclose(gzfp);
}

关于zlib中gzip file常用函数有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI