删除字符串中多有字母前的星号

删除字符串中多有字母前的星号

问题描述:

假设一个字符串中只有星号和英文字母,请删除所以字母前的星号,并输出修改后的字符串。如字符串为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;
}