www.pudn.com > Haffman_Compress_and_Decompress.rar > get_frequency.h
#include/*************************************** * 蔡敏 ***************************************/ using namespace std; #include "huffcode&decode.h" void get_frequency(char* filename,char* dir) { int i,j=0; char ch; ifstream infile; unsigned long chs[256]={0};// 每个字符出现的频率 infile.open(filename,ios_base::binary); infile.get(ch); while(!infile.eof()) { chs[(unsigned char)ch]++; infile.get(ch); } // 非0频率字符及其出现频率集合 char_record w[256]; memset(w, 0, sizeof(w)); for(i=0;i<=255;i++) { if(chs[i]!=0){ w[j].weight=chs[i]; w[j].ascii_code=(unsigned char)i; j++; } } for(i=0;w[i].weight!=0&&i<=255;i++)//这个循环是用来过滤掉权值为零的字符 ; // 此时i为非0频率出现的字符的数目 HaffNode* ht = hufftree(w, i);//建立hufftree HaffCode* hc = huff_encode(w, i, ht); HaffCompress(hc,i,filename,w,dir);//压缩文件 infile.close(); }