c语言,要求用指针做

字符串s中只能存入字母和星号,利用指针的方式将s中的*全部移动到字母的尾部。例如s中输入三个星号abcd三个星号ef,处理后输出s为abcdef六个星号。下方给出主函数,大家需要写出fun函数。要求用指针的形式,不用下标的形式。
主函数如下
void main()
{
char s[50];
scanf("%s",s);
fun(s);
printf("%s",s);
}

一个实现,供参考:


#include <stdio.h>
#include <string.h>
void fun(char * s){
    
    int i=0;
    int j;
    int star=0; 
    while(*(s+i)!='\0'){
        
    //    printf("before move ,i=%d,star=%d,s=%s\n",i,star,s); 
        while(*(s+i)=='*'&&(i+star)<strlen(s)){    //如果当前字符一直是星号并且没有处理完字符串,则将星号移到最后,并将后面的字符前移, 
            star++;      //星号的数量加一 
            
        
             
            for(j=i;j<(strlen(s)-1);j++){//前移后面的字符串 
                *(s+j)=*(s+j+1);
            }
            *(s+strlen(s)-1)='*';  //将星号移到最后一个位置 
            //printf("i=%d,star=%d,s=%s\n",i,star,s);
            
            
        
        }
        i++;  //指向后一个字符
    }
    
} 

int main()
{
char s[50];
scanf("%s",s);
fun(s);
printf("%s",s);
}


img