请问关于字符串变换的代码哪里出错导致输出原输入内容?

请问关于字符串变换的代码哪里出错导致输出原输入内容?

问题描述:

假定输入的字符串中只包含字母和 * 号。除了字符串前导的 * 号之外,将串中其他 * 号全部删除。 例如,若字符串中的内容为 ****A*BC*DEF*G******* , 删除后,字符串中的内容则应当是 ****ABCDEFG 。
输入的字符串中只包含字母和 * 号的字符串,长度不超过 10000
#include
#define N 10000
int main ()
{
int i=0,k;
char a[N];
gets(a);
while(a[i]!='*')
{
i++;
k=i;
a[i]=a[k];
}
for(i=0;a[k]!=0;i++,k++)
a[i]=a[k];
a[i]='\0';
printf("%s\n",a);
return 0;
}

一开始程序没进你的while就往下走了。
while(a[i]!='*')
{
i++;
k=i;
a[i]=a[k];
}
#include <stdio.h>
#include<string.h>

#define N 10000
int main ()
{
    int i=0,k=0,b=0;
    char a[N]={},res[N]={};
    gets(a);
    while (a[i]!=0) {
        if(a[i] == '*')
        {
            if(b == 0)
                res[k++] = a[i];
        }
        else{
            res[k++] = a[i];
            b = 1;
        }
        i++;
    }
    res[k]='\0';
    printf("%s\n",res);
    return 0;
}