帮忙看一下为什么这个结果?

图片说明

    #include<stdio.h>
    int main()
    {
        char s[100];
        int i,j,a;
        gets(s);
        for(a=0;s[a]!='\0';a++);
            for(i=a;i>=0;i--)
            {
                if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))
                 {
                    if((s[i+1]>='a'&&s[i+1]<='z')||(s[i+1]>='A'&&s[i+1]<='Z'))
                    {
                    for(j=i;j<=a+1;j++)
                    {
                        s[j+1]=s[j];
                    }
                    s[i+1]='*';
                    }
                 }
             }

        printf("%s\n",s);
        return 0;
    }

问题及解决方案:

  1. j循环应该从大到小,而不是从小到大
  2. s[i+1]=’‘这一条后面需添加a++,因为随着’‘的添加,数组长度变长