/*在长度为n的字符串t中连续出现相同字符的个数
不超过9个,函数fun按如下规则进行处理,若有连
续出现两个及以上相同的字符时,将这些连续的字
符表示成m*x的形式
(m为该字符,x为该字符出现的次数)。
例如:原字符串为"cccaeeeeebkkkkd",经过处理后的字符串为
"c*3ae*5bk*4d"。*/
#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+1;
for(j=n;j>i;j--)
t[j+2]=t[j];
t[i+1]='*';
t[i+2]=m+48;
n=n+2;
i+=3;
}
else i++;
}
}
int main()
{
char s[100];
printf("请输入字符串:");
gets(s);
int n;
n=strlen(s);
printf("压缩前的数据: ");
puts(s);
fun(s,n);
printf("压缩后的数据: ");
puts(s);
return 0;
}
判断字符串中字符的个数并直接更改数组
最新推荐文章于 2024-07-18 00:38:53 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)