//*******************************controll.h**********************
//*****************壓縮命令和解壓命令**********
#ifndef controll_h
#define controll_h
class controll //:public huffmantree
;#endif end
//*******************************huffman.h**********************
//*****************葉子結點為n的哈夫曼樹共有2n-1個結點**********
#ifndef huffman_h
#define huffman_h
class huffmannode
huffmannode(const char &data, const double &wt, const int &pa=-1, const int &lch=-1, const int &rch=-1)
}; //class huffmannode end
/*現在我把它調出來為的就是在controlll類當中使用這個類*/
class code
~code()
char *ptr;
const int length;
};class huffmantree
~huffmantree()
void run(const char*, const char*);
int getsumbytes();//定義待壓縮檔案的總bytes數
int currentsize; //當前陣列大小
huffmannode *arraytree; //哈夫曼結點陣列
code *codearray; //陣列大小為currentsize
int sum_bits;//定義壓縮後檔案的總bit數
private:
int maxsize; //陣列最大值
//int sum_bytes;
void insert(const char&, const double&); //插入結點
void createhuffmantree(); //建立哈夫曼樹
void createhuffmancode(); //建立哈夫曼編碼
void writecodetofile(const char *);//將huffman編碼寫入到詞頻表檔案當中
int findposition(const char &) const; //返回字元在arraytree中的位置
int isequal(const char *s) const; //判斷s是否存在於編碼系統中,若存在則返回s在編碼系統中的位置,否則返回-1
void reverse(char arr);
}; //class huffmantree end
#endif end
//**************************controll.cpp**********************
#include #include #include #include#include #include "controll.h"
#include "huffman.h"
using namespace std;
int controll::powmy(int a,int b)
printf("sum_bits=%d ",res[0]);
c = fgetc(fe); c = fgetc(fe);//頭乙個讀取#,後乙個才開始讀取資料
k = 0;
while(c!='#')
m = 0; res[1] = 0;
for(k=k-1;k>=0;k--)
printf("currentsize =%d\n",res[1]);
fclose(fe);
//果然是這個問題的原因導致的。 沒有關閉檔案會導致出錯
/* fclose(fe);
file *fww = fopen("c:\\out4.txt","wb");//開啟詞頻表檔案
for(i=0;i=8)
fflush(fw);
j = currentsize+1;
i = -1;}}
}if(i)
else
}sum_bit2 = 0;
printf("\r%4.2f%%",(double)(sum_bits-sum_bit2)/sum_bits*100.0);
fclose(fw);
fclose(fo);
}
//**************************huffman.cpp**********************
#include #include //for ofstream ifstream
#include //for numeric_limits::max()
#include //for exit()
#include //for strlen(), strcpy(), strcmp()
#include #include "huffman.h"
using namespace std;
void huffmantree::insert(const char &data, const double &wt)
/*將詞頻表存入相應的檔案當中*/
void huffmantree::writecodetofile(const char *outfilename)
int huffmantree::findposition(const char &ch) const
//執行解壓命令
else if(strcmp("-u",argv[1])==0)
return 0;
} end
C 壓縮和解壓縮
話不多說,直接上 最後有重要說明!哦對了,用的是icsharpcode.sharpziplib.zip 這個東西 壓縮 先宣告個全域性變數吧 附件打包的變數 zipoutputstream zos null 下面就是壓縮的 了 protected void btnfile click object ...
C 壓縮 解壓縮類
using system using system.collections.generic using system.text using system.io using icsharpcode.sharpziplib using icsharpcode.sharpziplib.zip using ...
c rar解壓大小 C 壓縮 解壓縮
1 2 壓縮檔案 fnamearry 為客戶端傳回來的檔案列表 檔名陣列,壓縮包的名稱strzipname3 4 檔名陣列 5 壓縮包的名稱 6 public void zipfile string fnamearry stringstrzipname 7 19 20 u.finish 結束壓縮 2...