字符串s中只能存入字母和星号,利用指针的方式将s中的*全部移动到字母的尾部。例如s中输入三个星号abcd三个星号ef,处理后输出s为abcdef六个星号。下方给出主函数,大家需要写出fun函数。要求用指针的形式,不用下标的形式。
主函数如下
void main()
{
char s[50];
scanf("%s",s);
fun(s);
printf("%s",s);
}
c语言,要求用指针做
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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盘,然后拔了