c语言高手进 压缩与解压程序

麻烦帮帮忙 不是很会c语言 以下是要求

一个简单的压缩与解压缩程序的实现
压缩程序:将要压缩的文件中比较长的重复出现的字节串替换为很短的字串。
解压程序:将替换后的字串还原,以得到原文件。
如:
AAABAAACAAADAAAEAAAFAAA
“ 压缩”以后:
#B#C#D#E#F#

你可以把AAA替换为A3
char* compress(char str[])
{
char c,*s;
int i,j,k,n;
n=strlen(str);
s=(char*)malloc((n+1)*sizeof(char));
for(i=0;i<=n;i++)
s[i]='\0';
for(i=0;i<n;i++)
{
c=str[i];
for(j=i+1;c==str[j];j++);
s[k++]=c;
if(j-i>1)
s[k++]='0'+j-i;
i=j;
}
return s;
}
char* decompress(char str[])
{
char c,*s,s1[100]='\0';
int i,j,k,n;
n=strlen(str);
s=s1;
for(i=0;i<n;i++)
{
c=str[i];
if(str[i+1]>='2'&&str[i+1]<='9')
{k=str[i+1]-'0';i+=2;}
for(j=0;j<k;j++,s++)*s=c;
i++;
}
s=s1;
return s;
}

上面的代码适用范围有限,文件最好只含有字母,连续重复不能超过9次,请根据需要修改
温馨提示:答案为网友推荐,仅供参考
相似回答