c语言多组输入输出问题

假定输入的字符串中只包含字母和星号。请编写程序:将字符串中的前导星号全部删除,中间和后面的星号不删除。
#include<stdio.h>
#define N 80
int main()
{
int i=0,k;
char a[N];
while(gets(a)){
while(a[i]=='*')
i++;
k=i;
for(i=0;a[k]!=0;i++,k++)
a[i]=a[k];
a[i]='\0';
printf("%s\n",a);}
return 0;
}
我想多组输入输出,为什么到第二次输出结果就不对呢?

img


#include<stdio.h>
#define N 80
int main()
{
    int i=0,k;
    char a[N];
    while(gets(a)){
        i=0;
        while(1){
            if(a[i]!='*')
                i++;
            else break;
        }    
        for(i,k=i+1;a[k]!='\0';i++,k++)
            a[i]=a[k];
        a[i]='\0';
        printf("%s\n",a);
    }
    return 0;
}

优化了一下 删除任意位置的先导 * 号

img

img