原题链接:字符串中间和后边*号删除
解题思路:
1.跳过前导'*'
2.记录第一个非'*'的字符的下一个位置,后面从该位置填补字符
3.继续往下检索字符,直到遇到'\0'
4.检索过程中遇到的非'*'字符填入之前记录的位置,并将位置+1
5.字符检索完毕后填'\0',函数结束
注意事项:
1.第一次记录的位置要正确
2.不要忘记补上'\0'
参考代码:
#include <string.h> #include <stdio.h> void fun(char *a) { int n = 0; int pos; while(a[n] == '*') n++; n++; pos = n; while(a[n] != '\0') { if(a[n] != '*') { a[pos++] = *(a+n); } n++; } a[pos] = '\0'; } main() { char s[81]; printf("Enter a string:\n"); gets(s); fun(s); puts(s); }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复