#include <stdio.h>
// 压缩字符串
// 例如aaaabbbbcdefffffghhhh
// a4b4cdef4gh4
void fun(char *pStr)
{
// 参数检测
if (pStr == NULL)
return;
char *p1 = pStr;
char *p2 = pStr;
while(*p2 != '\0')
{
char count = '1';
if(*p2== *(p2+1))
{
while(*p2== *(p2+1))
{
count=count+1;
p2=p2+1;
}
p1=p1+1;//指针向后移一位
*p1=count;//使字符后的位置是出现次数
p1=p1+1;//指针向后移一位
p2=p2+1;//使p2指向新字符的第一位
*p1=*p2;//将新字符赋给数字后的那一位
}
else
{
p1=p1+1;
p2=p2+1;
*p1=*p2;
}
}
p1=p1+1;
*p1='\0';
}
int main()
{
char str[]="aaaabbbbcdefffffghhhh";
fun(str);
printf("%s\n",str);
return 0;
}
指针有点烦但做出来觉得开心呀
有点小bug,因为count设置的时候等于‘1’,所以数字只能显示1-9,再之后就是ASCII码了。
欢迎大佬们指点