删除字符串中多有字母前的星号
问题描述:
假设一个字符串中只有星号和英文字母,请删除所以字母前的星号,并输出修改后的字符串。如字符串为abcdef修改后的字符串就是abcdef*
答
代码如下:
#include <stdio.h>
void fun(char* s)
{
char* t;
int i,len = 0;
int endpos =0;
char *lst;
//计算字符串的长度
while(s[len] != '\0')
len++;
//从后往前找第一个非*字符
endpos=len -1;
while(s[endpos] == '*')
endpos--;
//abcde****** 11 - 4 -1//len -1 - endpos
s[endpos+1] = '\0';
while(*s != '\0')
{
if(*s == '*')
{
t =s;
while(*t != '\0')
{
*t = *(t+1);
t++;
}
t--;
*t = '\0';
}else
s++;
}
//补齐最后的*
for (i=0;i<len-endpos-1;i++)
{
*s = '*';
s++;
}
*s = '\0';
}
int main()
{
char buf[100]={0};
gets(buf);
fun(buf);
printf("%s\n",buf);
return 0;
}