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(); 
}