C++ 求编写一个函数void fun(char *a),删除字符串a中除前导和尾部连续的#之外,其余的#全部删除。在main函数中,从键盘输入带#且无空格的字符串,调用fun函数处理字符串,并将字符串输出到屏幕
例如:###a#b##,运行结果为###ab##
编写一个函数删除字符串a中
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-link 2021-07-03 20:59关注
遍历比较字符是否为*,将后续字符全部前移一位
你这参数是char a,不是字符串啊,还请给出字符串参数的样式void fun(char *a) { int i,n = 0; int s=-1,e=-1; for(i=0;a[i] != '\0';i++) //首次遍历,找出前导和续尾*号外其余字符的起点和终点位置,以便下次循环处理 { if(a[i] != '*') //找到不是*号的字符 { if(s==-1) //如果尚未标记起点,则该字符位置即为起点 s = i; e = -1; //结束位置先设置为无效 } else //如果找到一个*号 { if(s >= 0 && e==-1) //如果已经标记了起点,且没有标记终点,那么将当前*号字符位置作为终点 e = i; } } if(e == -1) //不是用*号结尾,则数组尾部即为终点 e = i; while(s < e) //遍历处理所有中间字符 { if(a[s] == '*') //遇到*号删除 { for(i=s;a[i] != 0;i++) //将起点到字符串结束的字符全部前移一个位置 a[i] = a[i+1]; e--; } else s++; } } void main() { char a[100]; scanf("%[^\n]",a); fun(a); printf("%s\n",a); system("pause"); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 iOS 自定义输入法-第三方输入法
- ¥15 很想要一个很好的答案或提示
- ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
- ¥15 怀疑手机被监控,请问怎么解决和防止
- ¥15 Qt下使用tcp获取数据的详细操作
- ¥15 idea右下角设置编码是灰色的
- ¥15 全志H618ROM新增分区
- ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
- ¥15 NAO机器人的录音程序保存问题
- ¥15 C#读写EXCEL文件,不同编译