二级C 机试的一道编程题 我看不太懂

来源:百度知道 编辑:UC知道 时间:2024/06/07 04:23:45
void fun(char *a)
{
char *b=a;
while(*a)
{
if(*a=='*')
a++;
else{
*b=*a;
a++;
b++;
}
}
*b=0;
}

这个是一道题的答案 大概就是把字符串***fafasfgc****去掉“*”输出

我看了这个答案 发现看不懂 来个大哥解释下 特别是最后*b=0那里,还有开头 char *b=a

void fun(char *a)
{
char *b=a; //b指向a
while(*a) // 当a指向0也就是说字符串结束时条出循环
{
if(*a=='*') //当a指向*
a++;
else{ //当a不指向*
*b=*a;
a++;
b++;
}
}
*b=0; //b结尾添加字符结束标志 0
}

但是这个程序还是有问题@@
好好考虑下 哪儿有问题

去掉*的字符串放哪儿??

void fun(char *a)
{
char *b=a; //b指向a 用b指针来改变a中的值(本题去掉字符串中的“*”)
while(*a) // 当a指向0也就是说字符串结束时条出循环
{
if(*a=='*') //当a指向*
a++;
else{ //当a不指向*
*b=*a;
a++;
b++;
}
}
*b=0; //b结尾手动添加 字符结束标志 0 主要是规范点
}