【问题标题】:Confuse in using libbz2 fuction? Can Anybody Explain me it's Right Or Wrong?对使用 libbz2 功能感到困惑?谁能解释我这是对还是错?
【发布时间】:2015-10-19 14:23:45
【问题描述】:
main()
{
char source[1560]="mrinalsaikiaismynamenwhatnotiamgreatajajlksjkkslskldklkdklkdlwhgygehehhejhjejdjjjjjljlkkjjjjjjaasasaaasjsjssjskjkjalsjalksjajslkjckljdjfjfjfjffjkllkjldkjlskjlkjkljklklkalksklksjkjskjksjlksjjskjklsjsjskjkjkjjjsjkjjjjjbhbjbbjbjbssjbsjsbsjssjssjhjdjdjjkkmrinalsaikiaismynamenwhatnotiamgreatajajlksjkkslskldklkdklkdlwhgygehehhejhjejdjjjjjljlkkjjjjjjaasasaaasjsjssjskjkjalsjalksjajslkjckljdjfjfjfjffjkllkjldkjlskjlkjkljklklkalksklksjkjskjksjlksjjskjklsjsjskjkjkjjjsjkjjjjjbhbjbbjbjbssjbsjsbsjssjssjhjdjdjjkk";
int ret ;

bz_stream comp_stream;
comp_stream.next_in = source;
comp_stream.avail_in =strlen(source);

comp_stream.avail_out = 502 ;
char arr[comp_stream.avail_out];
comp_stream.next_out =arr;
comp_stream.opaque = NULL;
comp_stream.bzfree = NULL;
comp_stream.bzalloc = NULL;
comp_stream.state = NULL;

BZ2_bzCompressInit(&comp_stream,1,0,0);


printf("length before compression = %d \n",strlen(source));
printf(" string  original is %s \n",(comp_stream.next_in));


if(BZ2_bzCompress(&comp_stream, BZ_FINISH) == BZ_STREAM_END)
{
    printf("copressed Data\n");
    printf("compressed size length = %d \n",(502 - comp_stream.avail_out));
}
printf("compressed string = %s \n",comp_stream.next_out);
Decompress(comp_stream.next_out,(502 - comp_stream.avail_out));
BZ2_bzCompressEnd(&comp_stream);

【问题讨论】:

标签: c linux zip compression bzip2


【解决方案1】:

如果写入任何数据,next_out 的值将会改变,就像如果读取任何数据,next_in 会改变一样。换句话说,您尝试在压缩数据结束后立即解压缩数据。

【讨论】:

  • (感谢回复)...是的,但有什么问题...我想检查它是否正确压缩..
  • 解压需要指向解压数据开始的指针,而不是解压数据结束字节的指针。
  • comp_stream.next_out 指向解压字符串,指向解压数据的开始......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2013-08-21
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多