日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈夫曼编码(报告)

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈夫曼编码(报告) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、任務名稱: ?哈夫曼編譯碼

二、任務內容:

??????????????①編寫較美觀的圖形用戶界面;

???? ?????????②得到客戶端所發送的字符信息,并進行統計,每個字符 的頻度作為哈夫 ??????????????????

????????????????曼樹葉子結點的權值,并構建哈夫曼樹;

??????????????③進行哈夫曼樹的編碼和譯碼;

??????????????④自行選取5~7個二進制碼來進行壓縮;

??????????????⑤將壓縮好的字符發送到服務器端,并接受;

??????????????⑥解壓----譯碼-----編碼-----還原成原來的字符!

?

三、任務要求:

?????????????編寫一個用哈夫曼實現的編碼壓縮器,語言不限!

?????????????實現英文字符編譯碼的功能;

?????????????實現譯碼的壓縮解壓功能;

?????????????要有較美觀的圖形用戶界面;

?????????????從客戶端發送一段字符給服務器端,服務器端能成功的返回這段字符經過哈夫曼????

?????????????編譯碼之后的結果!

?

四、任務計劃:7-20 —— 7-22

??????????????????學會如何建立哈夫曼樹,了解并掌握哈夫曼編碼的編碼規則,在網上瀏覽

??????????????哈夫曼編碼的代碼實現方法,形成自己實現C語言編寫的基本方法和結構,練

??????????????習程序的實現過程,完成哈夫曼編碼;

??????????????7-23——7-25

??????????????????思考如何將哈夫曼編碼進行壓縮,測試,最后與之前代碼合并;

??????????????????解壓還原,通過控制哪些命令可以對應找到相應指令,簡單程序測試,與

??????????????原來代碼進行合并,完成壓縮解壓過程;

??????????????7-26——7-29

??????????????????Windows網絡編程,大概了解網絡編程的基礎知識,重點掌握TCP/IP協

??????????????議,socket,大致了解網絡編程中的重要名詞與數據類型,熟悉數據傳輸的基

??????????????本過程,練習數據傳輸代碼的實現過程,思考其與哈夫曼編碼傳輸的聯系

??????????????7-30——8-01

??????????????????實現數據傳輸過程,與原來代碼相結合,重新整理程序;

??????????????8-02——8-05

??????????????????了解圖形界面的處理,自己練習,然后加到原來程序上;

???????????????????完成實驗報告;完成代碼注釋;

?

五、實現情況:

?????????????7月25日前,完成哈夫曼編碼的壓縮解壓處理;

?????????????7月31日前,完成從客戶端發送一段字符給服務器端,服務器端能成功的返回???????????????????

?????????????這段字符經過哈夫曼編譯碼之后的結果

六、任務總結:

?????????????因為這次任務要做的基本沒有接觸過,所以首先制定了一個簡單的計劃,在做哈

?????????夫曼編碼時開始只能處理英文字母,然后又需要譯碼,要體現相互對應關系,所以多

?????????次修改了結構體類型成員,因為沒有想到要標記,開始做的很麻煩,出錯也很多,然

??????????后從頭開始換了另一種思路重新編寫,在壓縮和解壓的過程中,除了標記編碼之外,

??????????又出現了另一個問題;

??????????就是編碼的長度,壓縮之后變成十進制,解壓過程還需要將十進制轉換為二進制,

??????????但有可能會出現相同的十進制,不同的編碼(比如:001,0001,01對應十進制均為1,

??????????轉化為編碼又要根據之前編碼的長度來確定,不然都會變成1,1,1,編碼就沒有意

??????????義了),在分離每一位編碼時,涉及char和int的轉換,出現了一點問題,導致滯

??????????留了多半天的時間來處理;

?

??????????????最后是服務器與客戶端的連接,我沒有太深入的理解,只是簡單了解了這個數 ??????

??????????據傳輸的過程,看過例子程序之后,在自己編寫時,沒有結構和整體思路,完全進 ??

??????????行不下去,最后放棄,重新開始仔細閱讀Windows網絡編程相關基礎知識,然后經

??????????過老師的講解,大體掌握了整個書寫結構然后分過程編寫的,先寫服務器,在寫客

??????????戶端,然后理解記憶每個應用函數的作用及執行過程,因為涉及內容比較少,

??????????沒有寫線程;最后圖形界面,我看了一些東西,但是現在只會用C語言寫,設計的

??????????代碼麻煩不宜讀,我暫時放棄,接下來會慢慢接觸,先從底部開始了解,接下來再

??????????添加此功能;

?

七、心得體會:

????????????在學習使用一些新東西的時候,要先掌握它的語法規則,再看物理結構,通過知

????????識長知識,通過代碼長知識,拓寬自己的知識面;然后在設計代碼的過程中要注意合

????????理性和容錯性;接觸比較難的東西要有耐心,一步一個腳印,腳踏實地的弄懂模糊的

????????地方,加強程序編寫能力,真正能將書中的內容化成自己的代碼來實現功能;

? 網絡編程現學現用,暫時只了解了皮毛

附件:代碼

//server

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <WinSock2.h>

#include <conio.h>

#include <math.h>

?

#define PORT 8087

#define SERVER_IP "127.0.0.1"

#define BUFFER_SIZE 10000

#define MAX_SIZE 10000

#pragma comment(lib, "WS2_32")

?

#define MaxValue 10000 // 權值最大值

#define MaxBit 126 ????// 最大編碼位數

#define MaxN 126 ??????// 最大結點個數

#define FileName "D:\\哈夫曼編碼信息.txt"

?

int n;

/*====================================

=1.構造哈夫曼樹

=2.構造哈夫曼編碼 ?

=3.構造哈夫曼解碼

====================================*/

?

//哈夫曼樹的結點結構 定義

typedef struct

{

char wei;

int weight;//權值

int flag;//標記

int parent;// 雙親結點下一標

int leftChild;//左孩子下標

int rightChild;//右孩子下標

?} HaffNode;

?

?//哈夫曼編碼結構定義

typedef struct

{

char wei; ??????//字符

? char bit[MaxN]; //存放哈夫曼編碼的數組

? int start; ?????//編碼的起始下標

? int weight; ????//字符權值

?}Code;

typedef struct

{

char ch;

int ?weight;

}STR;

?

typedef struct

{

int n;

int wei;

}TRAN;

?

?

void HaffTree(STR str[],HaffNode haffTree[]);//構造哈夫曼樹

void HaffCode(HaffNode haffTree[],Code haffCode[],char huff[]);//哈夫曼編碼

void haffyima(HaffNode haffTree[],int n,Code haffCode[],int weight[],char ch[]);//哈夫曼譯碼

?

void file_build(char huffbm[10000]);//編碼存入文件

int file_read(STR str[]); ??????????//將文件中的編碼讀到結構體str中

?

int zip(char bianma[100][1000],Code haffCode[],TRAN trans[],char huff[],HaffNode haffTree[],char ch3[]);

int unzip(Code haffCode[],int num,TRAN trans[],char ch2[]);

?

?

SOCKET prepare(sockaddr_in server_addr,SOCKET m_Socket)//服務器準備

{

????server_addr.sin_family = AF_INET; // 聲明并初始化一個服務端(本地)的地址結構

????server_addr.sin_addr.S_un.S_addr = INADDR_ANY;

????server_addr.sin_port = htons(PORT);

??

????WSADATA wsaData; ?// 初始化socket dll

????WORD socketVersion = MAKEWORD(2, 0);

????if(WSAStartup(socketVersion, &wsaData) != 0)

????{

????????printf("Init socket dll error!");

????????return 0;

????}

????// 創建socket

????m_Socket = socket(AF_INET, SOCK_STREAM, 0);

????if (SOCKET_ERROR == m_Socket)

????{

????????printf("Create Socket Error!");

????????return 0;

????}

????//綁定socket和服務端(本地)地址

????if (SOCKET_ERROR == bind(m_Socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)))

????{

????????printf("Server Bind Failed: %d", WSAGetLastError());

????????return 0;

????}

????system("color 05");

????printf("Server Bind Succeed:::\n");

????system("color 04");

??

????//監聽

????if (SOCKET_ERROR == listen(m_Socket, 10))

????{

????????printf("Server Listen Failed: %d", WSAGetLastError());

????????return 0;

????}

printf("Server Listen Succeed:::\n");

????

????return m_Socket;

}

?

start_process(SOCKET m_New_Socket)//進程

{

????int i,j,num;

????char huffbm[10000];//cunfang bianma

????char bianma[100][1000];

????char ch2[10000],ch3[10000];

FILE *fp;

STR str[100];

TRAN trans[100];

HaffNode *myHaffTree;

Code ????*myHaffCode;

recv(m_New_Socket,huffbm,MAX_SIZE,0);

for(i=0;i<100;i++)

????trans[i].n=0;

loop:

????file_build(huffbm);//編碼輸入文件

printf("--->the next------Establish Huffman tree\n");

????getch();

????system("cls");

????system("color 0A");

if(file_read(str)==-1)

????{

????goto loop;

????} ???//文件中讀出編碼內容

myHaffTree=(HaffNode *)malloc(sizeof(HaffNode)*(2*n-1));

myHaffCode=(Code *)malloc(sizeof(Code)*n);

????if(n>MaxN)

{

????printf("n越界!!!\n");

getch();

return 0;

}

printf("\n☆☆☆Process one: ??Establish Huffman tree·····\n");

HaffTree(str,myHaffTree);

printf("\n--->the next------struct Huffman coding\n");

????getch();

????

system("cls"); ??????

printf("\n☆☆☆Process two: ??struct Huffman coding ·····\n");

HaffCode(myHaffTree,myHaffCode,huffbm); //構造輸出哈夫曼編碼

printf("\n--->the next------Decoding compressed\n");

????getch();

system("cls");

system("color 5E"); ???

printf("\n☆☆☆Process three: ?Decoding compressed ·····\n");

num=zip(bianma,myHaffCode,trans,huffbm,myHaffTree,ch3);

printf("\n--->the next------Decoding decompression\n");

????getch();

i=0;

char clen;

clen=(char)num;

printf("→→→→→clen=%c\n",clen);

printf("→→→→→num=%d\n",num);

if(send(m_New_Socket,&clen,sizeof(char),0)<0)

{

printf("---------Send length failed!!!!!---------\n");

return 0;

}

for(i=0; i<num; i++)

{

if(send(m_New_Socket,&ch3[i],sizeof(char),0)<0)

{

printf("---------Send compressed data ?failed!!!!!---------\n");

return 0;

}

}

printf("-----Send compressed data ?successful!!!!!\n");

printf("☆☆☆Process four: ?Decoding decompression ····\n");

memset(ch2,0,10000);

unzip(myHaffCode,num,trans,ch2);

if(send(m_New_Socket,ch2,MAX_SIZE,0)<0)

{

????printf("-----Decoding decompression information failed!!!!\n");

????return 0;

}

printf("\n--->the next------start a new process\n");

????getch();

}

int main()

{

????sockaddr_in server_addr;

????sockaddr_in client_addr;

????int ????????client_addr_len;

????SOCKET ?????m_Socket;

????SOCKET ?????m_New_Socket;

??

????m_Socket=prepare(server_addr,m_Socket);

????printf("\n ???????????????????服務器開始運行 ?????????????????????\n");

????printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");

????system("color 5E");

while(1)

????{

????????printf("\t\t-------Listening To Client...-----------\n\n");

????????client_addr_len = sizeof(client_addr);//得到地址長度

????????m_New_Socket = accept(m_Socket, (sockaddr *)&client_addr, &client_addr_len);

????????if (SOCKET_ERROR == m_New_Socket) //創建新的套接字

????????{

????????????printf("---------Server Accept Failed: %d", WSAGetLastError());//???????????

????????????break;

????????} ?

start_process(m_New_Socket);//開始進程

????????closesocket(m_New_Socket); //釋放新的套接字

????????

????printf("\n---the next→\n");

????????getch();

????????system("cls");

????????system("cls");

printf(" ??????????start a new process\n");

????}

????closesocket(m_Socket);

????//釋放winsock庫

????WSACleanup();

????return 0;

}

?

?

void file_build(char huffbm[10000])//編碼存入文件

{

FILE *fp;

fp=fopen(FileName,"w");

if(fp==NULL)

{

printf("Cannot open file!!!\n");

getchar();

exit(1);

}

????????

fprintf(fp,"%s\n",huffbm);

fclose(fp);

printf("informatoin write in file······\n");

?}

?

int file_read(STR str[])//將文件中的編碼讀到結構體str中

{

int i,j,k;

FILE *fp;

STR huff[10000]; ?????????????????//存放剛剛被讀出未統計的編碼

fp=fopen(FileName,"r");

if(fp==NULL)

{

printf("Cannot open file!!!\n");

getchar();

return 0;

}

i=0;

while((huff[i].ch=fgetc(fp))!=EOF)//讀入文件

{

//printf("%c",huff[i].ch);

i++;

}

for(i=0;i<100;i++)

????str[i].weight=huff[i].weight=0;//初始化權值

????//str weight:字符頻率 ????str1 weight:是否被記錄

k=0;

for(i=0; huff[i].ch!='\0'; i++)

{

if(huff[i].ch>=32&&huff[i].ch<=126&&huff[i].weight==0)

{

????str[k].ch=huff[i].ch;

for(j=i; huff[j].ch!='\0'; j++)

{

if(str[k].ch==huff[j].ch)

{

str[k].weight++;

huff[j].weight=1;

}

}

k++;

}

?????}

?/*printf("output the weight of zifu\n");

?????for(i=0;i<k;i++)

?????????printf("str[%d].ch=%c ??str[%d].weight=%d\n",i,str[i].ch,i,str[i].weight);*/

?????n=k;

?????return 1;

}

?

??

// 建立葉節點個數為n,權值數組為weight的哈夫曼樹

void HaffTree(STR str[],HaffNode haffTree[])

{

?? int i,j,m1,m2,x1,x2;

??

?? //初始化哈夫曼樹,n個葉結點的二叉樹共有2n-1個結點

for(i=0; i<2*n-1; i++)

{

?? if(i<n)

{

??haffTree[i].wei=str[i].ch;

??haffTree[i].weight = str[i].weight;//葉節點

??}

?? else haffTree[i].weight = 0;//非葉結點

??

?? haffTree[i].parent ?????= -1;

?? haffTree[i].flag ???????= 0;//是否加入二叉樹

haffTree[i].leftChild ??= -1;

haffTree[i].rightChild ?= -1;

}

???

//構造哈夫曼樹haffTree的n-1個非葉結點

for(i=0; i<n-1; i++)

{

m1=m2=MaxValue;

x1=x2=0;

for(j=0; j<n+i; j++)

{

if(haffTree[j].weight<=m1 && haffTree[j].flag==0)

{

?? m2=m1;

?? x2=x1;

?? m1=haffTree[j].weight;

?? x1=j;

}

else if(haffTree[j].weight<=m2 && haffTree[j].flag==0)

{

m2=haffTree[i].weight;

x2=j;

}

????} ??

//將找出的兩棵權值最小的子樹合并為一棵子樹

haffTree[x1].parent=n+i;

haffTree[x2].parent=n+i;

haffTree[x1].flag=1;

haffTree[x2].flag=1;

haffTree[n+i].weight=haffTree[x1].weight+haffTree[x2].weight;

haffTree[n+i].leftChild=x1;

haffTree[n+i].rightChild=x2;

????}

????printf("---------huffTree build!!!\n");

} ?

//由n個結點的哈夫曼樹->構造哈夫曼編碼

void HaffCode(HaffNode haffTree[],Code haffCode[],char huff[])

{

Code *cd = (Code *)malloc(sizeof(Code));

int i,j,k,child,parent;

//求n個葉結點的哈夫曼編碼

for(i=0; i<n; i++)

{

????cd->start = n-1;//權值越小,編碼越長

cd->weight=haffTree[i].weight;

child=i;//從小到大依次編碼

parent=haffTree[child].parent;

//刨根問底->從葉結點沿路直到根結點

while(parent !=-1)//-1根結點

{

if(haffTree[parent].leftChild==child)

cd->bit[cd->start]=0+48;

else

cd->bit[cd->start]=1+48;

???

cd->start--;//從后往前依次填碼

child=parent;

parent=haffTree[child].parent;

}

//保存每個葉結點的信息

for(j=cd->start+1; j<n; j++)

haffCode[i].bit[j]=cd->bit[j];//編碼

haffCode[i].wei=haffTree[i].wei;//字符記錄

haffCode[i].start=cd->start+1;//編碼起始位

haffCode[i].weight=cd->weight;//權值

}

printf(" ?????output the coding of character ???\n");

for(i=0; i<n; i++)

{

printf("%c-->",haffCode[i].wei);

? for(j = haffCode[i].start; j<n; j++)

????printf("%c",haffCode[i].bit[j]);

? printf("\n");

}

printf(" ??????output the coding of string\n");

printf("════════════════════\n");

for(i=0; huff[i]!='\0'; i++)

for(j=0;j<n;j++)

if(haffCode[j].wei==huff[i])

{

????for(k = haffCode[j].start; k<n; k++)

????????printf("%c",haffCode[j].bit[k]);

????printf(" ");

????break;

}

printf("\n════════════════════\n");

printf("\n");

}

?

int zip(char bianma[100][1000],Code haffCode[],TRAN trans[],char huff[],HaffNode haffTree[],char ch3[])

{

int i,j,m,k,l;

int len;

char ch;

m=0;

for(i=0; huff[i]!='\0'; i++)

{

//得到字符編碼

for(j=0;j<n;j++)

if(haffCode[j].wei==huff[i])

{

????for(k = haffCode[j].start,l=0; k<n; k++,l++)

????bianma[i][l]=haffCode[j].bit[k];

????break;

}

//編碼轉換

k=0;

for(j=l-1; j>=0; j--)

{

????ch=bianma[i][j];

m=(int)ch-48;

trans[i].n+=m*pow(2,k);

k++;

????}

trans[i].wei=k;

}

//output

memset(ch3,0,10000);

printf("════════════════════\n");

for(i=0;i<strlen(huff);i++)

????{

???? ch3[i]=(char)trans[i].n;

???? printf("%c ",ch3[i]);

????//printf("%d ?",trans[i].n);

}

printf("\n════════════════════\n");

printf("\n");

????return strlen(huff);

?}

?

int unzip(Code haffCode[],int num,TRAN trans[],char ch2[])

{

int i,m,r,j,k;

char a[100][100]={0},ch[100][100]={0};

//ASCALL碼轉化成二進制

for(i=0; i<num; i++)

{

m=trans[i].n;

j=0;

if(m==0)//0000

????{

????for(k=0;k<trans[i].wei; k++)

????????????a[i][k]='0';

????????a[i][k]='\0';

????}

else if(m==1)//0001

???{

???????a[i][0]='1';

???????for(k=1;k<trans[i].wei;k++)

???????????a[i][k]='0';

????????a[i][k]='\0';

}

else

{

????while(m!=0)

????{

????????a[i][j]=m%2+48;

????m=m/2;

????j++;

????}

????if(trans[i].wei>=j)

?????for(k=j; k<trans[i].wei; k++)

?????????a[i][k]='0';

a[i][k]='\0';

????}

????

}

?

for(i=0; i<n; i++)

????for(j=haffCode[i].start,k=n-haffCode[i].start-1; j<n,k>=0; j++,k--)

????????ch[i][k]=haffCode[i].bit[j];//哈夫曼編碼存入字符數組

????????

//編碼對應字符

printf("════════════════════\n");

k=0;

for(i=0;i<num;i++)

????for(j=0; j<n; j++)

{

????if(strcmp(a[i],ch[j])==0)

????????{

????????????ch2[k++]=haffCode[j].wei;

printf("%c",haffCode[j].wei);

break;

}

}

printf("\n════════════════════\n");

printf("\n");

ch2[k]='\0';

??return 1;

}

?

?

?

/*====================================================

=Name: ????Client

=function: Send a bunch of strings

=Athor ??: Cassiel

====================================================*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <WinSock2.h>

??

#define PORT 8087 ????????????????????//The port number

#define SERVER_IP "127.0.0.1" ????????// Server ip address

?

#define BUFFER_SIZE 10000 ????????????//Buffer (array) maximum length

#define MAX_SIZE 10000 ???????????????//Maximum length of string

#pragma comment(lib, "WS2_32") ???????//Link Library--->API function

?

//Initialize the dynamic-link library

int initial_dll();

//Initialize

SOCKET initial_socket(SOCKET c_Socket);

int intial_sockaddress(SOCKET c_Socket,sockaddr_in server_addr);

int zip(char ch2[],SOCKET c_Socket);

int unzip(char ch2[],SOCKET c_Socket);

void menu();

?

int main()

{ ?

int ????????i=0,num;

????SOCKET ?????c_Socket;

char ???????len;

????sockaddr_in server_addr;

????char ???????huffbm[MAX_SIZE],ch2[MAX_SIZE];//原碼 解壓后的字符串

????

????initial_dll();

????c_Socket=initial_socket(c_Socket);

????intial_sockaddress(c_Socket,server_addr);//指定服務端的地址

menu();

????system("color 0A");

????loop:

????zip(ch2,c_Socket);

unzip(ch2,c_Socket);

closesocket(c_Socket);

????//釋放winsock庫

????WSACleanup();

????system("pause");

????return 0;

}

?

int initial_dll()

{

// 初始化socket dll

??WSADATA wsaData;

??WORD socketVersion = MAKEWORD(2, 0);

??if(WSAStartup(socketVersion, &wsaData) != 0)

??{

????printf("Init socket dll error!");

????return 0;

??}

??return 1;

}

SOCKET initial_socket(SOCKET c_Socket)

{

c_Socket = socket(AF_INET, SOCK_STREAM, 0);

if (SOCKET_ERROR == c_Socket)

????{

??????printf("Create Socket Error!");

??????system("pause");

??????return 0;

????}

????return c_Socket;

}

int intial_sockaddress(SOCKET c_Socket,sockaddr_in server_addr)

{

?????

????server_addr.sin_family = AF_INET;

????server_addr.sin_addr.S_un.S_addr = inet_addr(SERVER_IP);

????server_addr.sin_port = htons(PORT);

?

printf("begin to connect with server......\n");

????if (SOCKET_ERROR == connect(c_Socket, (LPSOCKADDR)&server_addr, sizeof(server_addr)))

????{

????????printf("ERROR:::Can Not Connect To Server IP!!!\n");

????????system("pause");

????????return 0;

????}

printf(" ????connected successfully!!!!!!!\n"); ??

}

int zip(char ch2[],SOCKET c_Socket)

{

char huffbm[MAX_SIZE];

char len;

int num;//原碼

printf("\tPlease Input the information you want to deal: \n");

????scanf("%s",huffbm);

?

????//向服務器發送信息

????if(send(c_Socket, huffbm, BUFFER_SIZE, 0) < 0)

????{

????????printf("-----------Send information Failed----------\n");

????????system("pause");

????????return 0;

????}

printf("----------Send information succeed----------\n");

system("cls");

????printf("\n--------------------▼after zip▼-----------\n");

????printf("---Server Processing\n");

int i=0;

if(recv(c_Socket, &len, sizeof(char),0)<0)

{

printf("----------Receive length failed!!!!---------\n");

return 0;

}

printf("→→→→len=%c\n",len);

num=(int)len;

printf("→→→→num=%d \n",num);

printf("\n\n");

printf(" ????????????????壓縮信息 ????????????????\n");

printf("════════════════════\n");

for(i=0; i<num; i++)

{

if(recv(c_Socket, &ch2[i],sizeof(char),0)<0)

{

printf("---------Receiving compressed data failed!!!!!!!-----\n");

return 0;

}

printf("%c ",ch2[i]);

}

printf("\n════════════════════\n");

printf("Receive information From Server Successful!\n");

printf("---the next-->\n");

????getchar(); ?

????return i;

}

int unzip(char ch2[],SOCKET c_Socket)

{

????//向服務器發送信息

????if(recv(c_Socket, ch2, MAX_SIZE,0) < 0)

????{

????????printf("---------Receive information Failed---------\n");

????????system("pause");

????????return 0;

????}

????printf("\tReceive information: %s From Server Successful!\n", "unzip");

????printf("--------------------▼after unzip▼----------------------:\n");

?

????printf("\n\n");

????printf(" ????????????????????解壓信息 ?????????????????????????????\n");

????printf("════════════════════\n");

printf("%s\n",ch2);

printf("\n════════════════════\n");

printf("\n---the next-->\n");

????getchar(); ??

}

void menu()

{

system("color 09");

printf("\n ???????????????????客戶端開始運行 ?????????????????????\n");

????printf("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");

????printf("stating: you are needed to input some information ??????\n");

????printf(" ????????then the server will zip and unzip it ?????????\n\n");

????printf("---the next-->\n");

????getchar();

????system("cls");

????

????system("color 0A");

????printf("\t\tYou can deal your information!!\n\n");

????printf("\t\t============the menu===========\n");

????printf("\t\t=====↓ ????zip data============\n");

????printf("\t\t=====↓ ????unzip data==========\n");

????printf("\t\t=====↓ ????exit================\n");

????printf("\t\t================================\n");

}

總結

以上是生活随笔為你收集整理的哈夫曼编码(报告)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。