当前位置:首页 » 编程语言 » 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等等。

热点内容
数据库主文件 发布:2024-05-07 00:14:41 浏览:607
木头创意解压 发布:2024-05-07 00:11:55 浏览:215
密码都能设置什么 发布:2024-05-07 00:02:30 浏览:741
兰州大学网络服务器ip地址 发布:2024-05-06 23:44:09 浏览:429
安卓手机为什么这么香 发布:2024-05-06 23:33:19 浏览:623
安卓微信深色模式是什么意思 发布:2024-05-06 23:14:41 浏览:686
脚本样本 发布:2024-05-06 23:03:41 浏览:630
sqlserver导出 发布:2024-05-06 23:02:16 浏览:808
phpredis操作 发布:2024-05-06 22:56:24 浏览:584
查看qq加密相册软件 发布:2024-05-06 22:45:36 浏览:619