原题链接:字符串中间和后边*号删除
解题思路:
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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复