当前位置:首页 » 文件管理 » c压缩文件夹

c压缩文件夹

发布时间: 2022-10-02 04:09:46

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语言如何对文件进行压缩

winrar软件安装后,所在的安装目录下有个rar.exe,开一个命令窗口到该目录下运行rar
/?就能看到用法了,在你的程序里面调用它的相应命令行是最简单的方法,自己编写压缩算法的话,先不谈效率,起码算法就是相当复杂的了

㈢ 如何用C语言解压缩文件

如果你自己设计算法,就另当别论,如果想利用第3方的算法,我推荐用zlib,生成的压缩包是流行的zip格式.源代码很好找(www.zlib.net)

㈣ 有个C程序,用来批量压缩文件夹里的文件压缩为rar格式,出了点问题

大概看了一下,有几个疑问:
1、rar软件也在压缩文件夹里吗?因为你写的是./rar
2、system函数的参数似乎有问题,最外面的两个strcat是不是可以去掉了

我现在没有环境,你可以用gdb跟一下,很容易找到问题所在的

㈤ 怎么用c语言将.zip文件解压成文件夹

简单一点的 直接调用系统命令
比如system("unzip ___filename___ -d target_path");
这样做 实际就相当于在命令行下敲了这样的一个命令
不过 这个要求系统内 必须安装了unzip这个软件 即支持这个命令

复杂一些的 你可以再网上找一个开源的gzip 很多很好找的 然后看懂代码 调用对应的接口函数
这样做的好处不需要依赖系统环境

㈥ 我的电脑清理磁盘C压缩旧文件夹上怎么删不了

这个很正常的.其实现在的硬盘空间都很大,所以磁盘清理的时候没必要选择压缩旧文件.
这个并不能说你的电脑哪部分出了问题.所谓压缩旧文件,是把一些旧文件进行压缩,以腾挪些空间出来.不能压缩是正常的.既不能压缩,你在磁盘清理的选项中别选这个就是了.其实选上这个也极耗时间的.不如不选.

㈦ 如何使用winrar命令行压缩一个文件夹,并且打开压缩文件是直接显示该文件夹

@echo off
"C:\Program Files\WinRAR\rar.exe" a -ep1 -R C:\Users\Administrator\Desktop\1\1.rar C:\Users\Administrator\Desktop\1
试一试。我找这个问题找了好久,最后找不到,有个同事对VB有些了解,帮忙弄的这个。
"C:\Program Files\WinRAR\rar.exe"这个是rar的路径,也可以WinRAR a这种。
-ep1是关键,没有这个就是所有文件都在一个路径里了。
-R这个不太懂。
C:\Users\Administrator\Desktop\1\1.rar这个是指把压缩包放在哪儿,名字为1的rar文件。C:\Users\Administrator\Desktop\1这个是指把哪个路径的文件压缩。具体根据实际情况自己修改,这只是我自己建的例子。如有错误,欢迎指正。如有帮助,点赞啥的也不要吝啬哈。

㈧ c语言压缩文本文件 求解答

#include"stdio.h"
#include"string.h"
#include"malloc.h"


#defineMOD_ADLER65521
#defineHASHMAX1000
#defineMAX_INT9999999//最大读取数字为99999999
#defineCHARBUFLEN40960
#defineDECOMPRESSINITLEN1024

structstringInfo
{
intNo;//字符串出现的次序
char*str;//字符串
structstringInfo*next;//下一节点
}*strTable[HASHMAX];//用于压缩
intisCompress;
char**strTableDe;//解压缩表,用于解压缩
longdeTableLen;//解压缩表长度
longcurStrNum;//目前的字符串数量

//程序初始化
voidinit()
{
inti;
curStrNum=1;
isCompress=1;//压缩模式,等于0时解压缩
if(isCompress)
{
for(i=0;i<HASHMAX;i++)strTable[i]=NULL;
deTableLen=0;
strTableDe=NULL;
}
else
{
deTableLen=DECOMPRESSINITLEN;
strTableDe=(char**)malloc(deTableLen*sizeof(char*));
for(i=0;i<deTableLen;i++)strTableDe[i]=NULL;
}
}
//重新申请内存
voidReMallocDeTable()
{
deTableLen<<=1;
strTableDe=(char**)realloc(strTableDe,deTableLen*sizeof(char*));
}

//程序结束,释放内存
voidover()
{
inti;
structstringInfo*pNext,*pDel;

for(i=0;i<HASHMAX;i++)
{
pNext=strTable[i];
while(pNext)
{
free(pNext->str);
pDel=pNext;
pNext=pNext->next;
free(pDel);
}
}
if(strTableDe)
{
for(i=0;i<curStrNum;i++)
{
//printf("%d %s ",i,strTableDe[i]);
free(strTableDe[i]);
}
free(strTableDe);
}
}

//adler32校验和算法
unsignedlongadler32(unsignedchar*data,size_tlen)
{
unsignedlonga=1,b=0;
size_tindex;

for(index=0;index<len;++index)
{
a=(a+data[index])%MOD_ADLER;
b=(b+a)%MOD_ADLER;
}
return(b<<16)|a;
}

//求字符串的Hash,实现快速查找,这里用的是adler32算法,可以使用其它任何hash方法
unsignedlongHash(constchar*str)
{
returnadler32((unsignedchar*)str,strlen(str))%HASHMAX;
}

//复制新字符串
char*NewStr(constchar*str)
{
char*r=(char*)malloc(strlen(str)+1);
strcpy(r,str);
returnr;
}

//取得字符串出现的次序
intgetStrPos(constchar*str)
{
unsignedlonghash;
structstringInfo*pFirst,*pNext,*pNew;

hash=Hash(str);
pNext=pFirst=strTable[hash];
while(pNext)
{
if(strcmp(pNext->str,str)==0)returnpNext->No;
pNext=pNext->next;
}

//没有找到匹配的字符串
pNew=(structstringInfo*)malloc(sizeof(structstringInfo));
pNew->next=NULL;
pNew->No=curStrNum++;
pNew->str=NewStr(str);
if(pFirst==NULL)strTable[hash]=pNew;
else
{
pNext=pFirst;
while(pNext->next)pNext=pNext->next;
pNext->next=pNew;
}
return-1;
}

//读取字符串,字符串以空格为结束符
//返回负数的绝对值是读取的是字符串长度,正数为读取的数字
intReadStr(char*out,constchar*in)
{
char*po,*pn;
constchar*pi;
intr;

po=out;
pi=in;
while(('a'<=*pi&&*pi<='z')||('A'<=*pi&&*pi<='Z')||('0'<=*pi&&*pi<='9'))
*po++=*pi++;//只复制大小写字母和数字
*po=0;

//试着转化为纯数字
r=0;
pn=out;
while('0'<=*pn&&*pn<='9')
{
if(r>MAX_INT)break;
r*=10;
r+=*pn++-'0';
}
if(*pn)returnout-po;//未成功转化为数字
elsereturn(r&0x7FFFFFF)|(((po-out)&0xF)<<27);
}

voidmain()
{
charreadFileBuf[CHARBUFLEN],readStrBuf[CHARBUFLEN];
char*prfb;
intnum;
FILE*fpr,*fpw;

fpr=fopen("source.txt","r");//输入文件
fpw=fopen("object.txt","w");//输出文件


if(fpr==NULL||fpw==NULL)return;

init();
while(!feof(fpr))
{
if(fgets(readFileBuf,CHARBUFLEN-1,fpr)==NULL)break;
prfb=readFileBuf;
while(*prfb)
{
num=ReadStr(readStrBuf,prfb);
if(num==0)fputc(*prfb++,fpw);//没有读取成功
elseif(num>0)//读入数字
{
prfb+=(num>>27)&0xF;//移动读取的位数
if(isCompress)fprintf(fpw,"0%d",num&0x7FFFFFF);//压缩模式写入数字,前面添加个数字0
else
{
num&=0x7FFFFFF;
if(num==0)//如果读到数字0
{
prfb+=1;
num=ReadStr(readStrBuf,prfb);//读取下一格数据串
if(num>0)
{
prfb+=(num>>27)&0xF;//移动读取的位数
fprintf(fpw,"%d",num&0x7FFFFFF);
}
elsefprintf(fpw,"0",num&0x7FFFFFF);//下一个不是数字
}
elseif(num<curStrNum)fprintf(fpw,"%s",strTableDe[num]);//解压模式写入字符串
else
{
printf("Error:%d,%d ",num,curStrNum);
fprintf(fpw,"%d",num);//num大于已知的字符串数量,写入数字
}
}
}
else
{
num=-num;
prfb+=num;//移动读取的位数
if(isCompress)
{
num=getStrPos(readStrBuf);
if(num<0)fprintf(fpw,"%s",readStrBuf);//未出现过的字符串
elsefprintf(fpw,"%d",num);//写入位置
}
else
{
fprintf(fpw,"%s",readStrBuf);
if(curStrNum>=deTableLen)ReMallocDeTable();//解压表长度不够,重新申请空间
strTableDe[curStrNum++]=NewStr(readStrBuf);//加入解压表
}
}
}
}
if(isCompress)printf("Compresssuccessful! ");
elseprintf("DecompressSuccessful! ");
over();
}

热点内容
云服务器做网站服务器用什么系统 发布:2024-05-02 10:20:26 浏览:896
python经典程序实例 发布:2024-05-02 09:42:07 浏览:260
酷丰c10出厂密码多少 发布:2024-05-02 09:23:33 浏览:376
开发安卓游戏需要会什么 发布:2024-05-02 09:04:22 浏览:977
无线网密码忘了手机怎么改 发布:2024-05-02 08:57:24 浏览:527
iis上传文件权限设置 发布:2024-05-02 08:56:39 浏览:232
ipad文件加密 发布:2024-05-02 08:20:30 浏览:443
粉土压缩模量 发布:2024-05-02 07:53:59 浏览:806
国都证券初始密码是多少 发布:2024-05-02 07:46:39 浏览:110
shell脚本和linux命令行 发布:2024-05-02 07:37:54 浏览:968