當前位置:首頁 » 編程語言 » c語言壓縮數據

c語言壓縮數據

發布時間: 2023-06-01 02:32:20

『壹』 c語言都有哪些經典的無損壓縮演算法

C語言經典的無損壓縮演算法有:哈夫曼演算法、LZ。

哈夫曼演算法:
哈夫曼編碼是David A. Huffman於1952年發明的一種滿足對編碼演算法要求的一種編碼演算法。
哈夫曼演算法是利用頻率信息構造一棵二叉樹,頻率高的離根節點近(編碼長度短),頻率低的離根節點遠(編碼長度長),手動構造方法是先將字母按照頻率從小到大排序,然後不斷選擇當前還沒有父節點的節點中權值最小的兩個,構造新的父節點,父節點的值為這兩個節點值的和,直到構造成一棵二叉樹。

LZ演算法:
LZ演算法及其衍生變形演算法是壓縮演算法的一個系列。LZ77和LZ78演算法分別在1977年和1978年被創造出來。雖然他們名字差不多,但是演算法方法完全不同。這一系列演算法主要適用於字母數量有限的信息,比如文字、源碼等。流行的GIF和PNG格式的圖像,使用顏色數量有限的顏色空間,其壓縮就採用了兩種演算法的靈活變形應用。

『貳』 如何用c語言壓縮解壓文件夾

你是想自己寫代碼實現解壓縮的功能,還是只是在代碼中調用命令來解壓,system()找到你的解壓縮工具在加相應的參數

『叄』 C語言實現文件壓縮

typedef int (WINAPI ICEPUB_COMPRESSFILE)(char *strFilename, char *strZipFilename);
ICEPUB_COMPRESSFILE *icePub_compressFile = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_compressFile = (ICEPUB_COMPRESSFILE *)GetProcAddress(hDLLDrv, "icePub_compressFile");
}

if(icePub_compressFile)
icePub_compressFile("a.exe","a.Z");

if(hDLLDrv)
FreeLibrary(hDLLDrv);

typedef int (WINAPI ICEPUB_UNCOMPRESSFILE)(char *strZipFilename,char *strFilename);
ICEPUB_UNCOMPRESSFILE *icePub_uncompressFile = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_uncompressFile = (ICEPUB_UNCOMPRESSFILE *)GetProcAddress(hDLLDrv, "icePub_uncompressFile");
}

if(icePub_uncompressFile)
icePub_uncompressFile("a.Z","a.exe");

if(hDLLDrv)
FreeLibrary(hDLLDrv);

『肆』 C語言壓縮

#include<stdio.h>
intmain()
{inti,j;
chars[105];
scanf("%s",s);
for(j=0,i=1;s[i];i++)
{while(s[i]==s[i-1])i++;
printf("%d",i-j);
j=i;
}
printf("%d ",i-j);
return0;
}

『伍』 用c語言編譯個簡單壓縮程序

/*
流程是:
1.讀取一個字元,寫入A
2.再讀取一個字元,寫入B
3.判斷AB是否相等,相等轉4,否則轉5
4.一直讀,同時統計數量,直到讀取到和A不相等的字元,將改字元寫入B,轉5
5.將對應數據寫入文件
下面是偽代碼
*/
charA;
charB;
inti;
FilewriteFile;//要寫入的文件
FilereadFile;//要讀的文件
A=readChar(readFile);//讀一個字元
while(文件未讀完){
B=readChar(readFile);//讀一個字元
if(A==B){
i=2;
while((B=readChar(readFile))==A){//一直讀,直到讀取的字元和A不一樣
i++;
}
write(writeFile,A+"$"+i);//i代表重復數量
A=B;
}else{
write(writeFile,A);
A=B;
}
}

『陸』 c語言字元串如何壓縮

話說B數組不應該是整形呀,不然不能保存字母了。以下是我的代碼。。。

#include<iostream>

#include<string.h>

#include<stdio.h>

usingnamespacestd;


voidyasuo(chara[],charb[])

{

intcount=1,p=0;

for(inti=0;i<strlen(a);i++)

if(a[i]==a[i+1])

count++;

elseif(count>2)

{

b[p++]=(char)(count+'0');

b[p++]=a[i];

count=1;

}

elseif(count==2)

{

b[p++]=a[i];

b[p++]=a[i];

count=1;

}

else

b[p++]=a[i];

}

voidprintB(charb[])

{

cout<<b<<endl;

}

voidbackB(charb[])

{

for(inti=0;i<strlen(b);i++)

if(b[i]<='9'&&b[i]>='3')

{

for(intj=0;j<(int)(b[i]-'0');j++)

cout<<b[i+1];

i++;

}

else

cout<<b[i];

cout<<endl;

}

intmain()

{

chara[1000]={0},b[1000]={0};

gets(a);

yasuo(a,b);

printB(b);

backB(b);

}

『柒』 c語言 文本文件壓縮

再發次,有80分呢哎



『捌』 用C語言編程:一個簡單的數據壓縮程序(急!!!)

#include"stdio.h"
int c1(char a[],int i)
{int c=1;
while(a[i+1]==a[i])
{c++;i++;}
return c;
}

int c2(char a[],int i)
{int c=0;
while(a[i+1]!=a[i])
{c++;i++;}
return c;
}

int len(char a[])
{ int i=0;
while(a[i]!='\0')
i++;
return i;
}

main()
{char b[100];
char a[100]={'5','5','5','8','1','3','胡此9','9','9','9','7','2','7','2','6','6','6'};
int i=0,j=0,k=0,s,c;
while(a[i]!='褲鏈迅\0')
{
if(a[i+1]==a[i])
{
c=c1(a,i);
b[j]=c;
b[j+1]=a[i];
i++;j++;
}
else
{ c=c2(a,i);
b[j]=-c;
for(k=0;k<c;k++)
{b[j+1]=a[i];
i++;j++;}
}
i+=c;
}
s=len(b);
for(j=0;j<s;j++)
printf("%d",b[j]);
}
幫我喚畢看一下,哪裡錯了,謝謝

『玖』 如何用C語言實現數據壓縮

首先選擇一個壓縮演算法

然後按照演算法實現壓縮代碼,調用介面就可以
常見的 可以使用哈夫曼編碼壓縮,或者使用開源的壓縮代碼,比如lzo, gzip, lzma等等。

熱點內容
如何取消酷派手機密碼鎖屏 發布:2023-10-04 18:36:58 瀏覽:854
windows遠程腳本 發布:2023-10-04 18:16:41 瀏覽:558
如何設置優先伺服器 發布:2023-10-04 17:58:35 瀏覽:908
php數字字元串相加 發布:2023-10-04 17:54:01 瀏覽:120
伺服器地址後面8090 發布:2023-10-04 17:12:24 瀏覽:249
蝴蝶形演算法 發布:2023-10-04 16:48:40 瀏覽:706
王者榮耀安卓怎麼移區 發布:2023-10-04 16:20:25 瀏覽:594
python安裝環境配置 發布:2023-10-04 15:53:58 瀏覽:595
c語言怎麼取整數 發布:2023-10-04 15:32:25 瀏覽:432
設置微信存儲空間 發布:2023-10-04 15:30:44 瀏覽:905