#include<stdio.h>
#include<string.h>
void fun(char t[],int n)
{
int i,k,m,j;
i=0;
while(i<n-1)
{
k=i+1;
while(t[k]==t[i])
k++;
m=k-i;
if(m>1)
{
for(j=i+1;k<=n;j++,k++)
t[j]=t[k];
n=n-m;
for(j=n;j>i;j--)
t[j+1]=t[j];
t[i+1]='*';
t[i+2]=m+48;
n=n+1;
i+=3;
}
else
m=k-i+1;
if(m>1)
{
for(j=i+1;k<=n;j++,k++)
t[j]=t[k];
n=n-m+1;
for(j=n;j>i;j--)
t[j+1]=t[j];
t[i+1]='*';
t[i+2]=m+48;
n=n+1;
i+=3;
}
else
i++;
}
}
int main()
{
char s[100]="cccaeeeeebkkkkd";
int n;
n=strlen(s);
printf("压缩前的数据:");
puts(s);
fun(s,n);
printf("压缩后的数据:");
puts(s);
return 0;
}
#include<string.h>
void fun(char t[],int n)
{
int i,k,m,j;
i=0;
while(i<n-1)
{
k=i+1;
while(t[k]==t[i])
k++;
m=k-i;
if(m>1)
{
for(j=i+1;k<=n;j++,k++)
t[j]=t[k];
n=n-m;
for(j=n;j>i;j--)
t[j+1]=t[j];
t[i+1]='*';
t[i+2]=m+48;
n=n+1;
i+=3;
}
else
m=k-i+1;
if(m>1)
{
for(j=i+1;k<=n;j++,k++)
t[j]=t[k];
n=n-m+1;
for(j=n;j>i;j--)
t[j+1]=t[j];
t[i+1]='*';
t[i+2]=m+48;
n=n+1;
i+=3;
}
else
i++;
}
}
int main()
{
char s[100]="cccaeeeeebkkkkd";
int n;
n=strlen(s);
printf("压缩前的数据:");
puts(s);
fun(s,n);
printf("压缩后的数据:");
puts(s);
return 0;
}