C++ 求编写一个函数void fun(char *a),删除字符串a中除前导和尾部连续的#之外,其余的#全部删除。在main函数中,从键盘输入带#且无空格的字符串,调用fun函数处理字符串,并将字符串输出到屏幕
例如:###a#b##,运行结果为###ab##
遍历比较字符是否为*,将后续字符全部前移一位
你这参数是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");
}