题目一:假定输入的字符串中只包含字母和*。编写函数 fun,除了字符串前导的*之外,
将串中其他*全部删除。在编写函数时,不得使用 C语言提供的字符串函数。例如,若字符串
中的内容为****A*BC*DEF*G***等**样,删除后,字符串中的内容则应当是****ABCDEFG。
#include<stdio.h>
#include<string.h>
void fun(char*x)//利用指针来接收字符数组的首地址
{
char* s = x;//此步骤是是本题的核心,下面你就会理解
//将s视为x的辅助,用于当检测到*时的跳过
while (*s=='*')//利用循环,将指针移动到第一个不是*的位置
{
*x++ = *s++;
}
while (*s)
{
//基础版:(为了便于解释,笔者所写)
/*if (*s == '*')//当没有识别到*时,s就自加,不将s地址内的数据赋给x,即跳过是*的时候
{
s++;
}
else//同理,将s地址内的数据赋给x,即当s不为*时,x才进行保留
{
*x = *s;
x++;
s++;
}*/
//进阶版:
if (*s != '*')
*x++ = *s;//解引用的优先级高于自加的
s++;
}
*x = '\0';
}
int main()
{
char arr[] = "****A*BC*DEF*G***";//中间不能有