2015-10-19 39 views
0
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); 
+1

問題是什麼?你得到的輸出與你預期的不一樣嗎?如果是這樣,請說出你的預期輸出和你實際得到的輸出 – bznein

+0

遐我正在輸出,但我不知道它是對還是錯,但是當我解壓那個字符串時,會給我BZ_DATA_ERROR_MAGIC錯誤。 –

+0

你已經是SO的成員了,已經閱讀了[幫助頁面](http://stackoverflow.com/help),特別是名爲[「我可以問什麼問題?」](http: //stackoverflow.com/help/on-topic)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。你還應該有時間[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –

回答

0

如果有任何數據被寫入,next_out的值將會改變,就像next_in在讀取任何數據時將會改變。換句話說,你試圖在你的壓縮數據結束後立即從解壓縮數據。

+0

(謝謝你的答覆)...是的,但是這是什麼問題...我想檢查它是否正確壓縮或不需要。 –

+0

在解壓縮數據結束後,解壓縮需要指向解壓縮數據的*開頭*,而不是指向字節*的指針。 – nemequ

+0

comp_stream.next_out指向解壓縮字符串,該字符串指向解壓縮數據的開頭.... –

相關問題