m0_70812669 2022-05-11 10:47 采纳率: 100%
浏览 42
已结题

c语言,要求用指针做

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

  • 写回答

1条回答 默认 最新

  • a5156520 2022-05-11 12:19
    关注

    一个实现,供参考:

    
    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了