目的是删除a字符串中的b字符串,哪里有问题吗?

#include
#include
main()
{ int i,j,n,k,m=0,t=0,s,lon=0;
  char a[100],b[100],c[100];
  gets(a);
  gets(b);
  k=strlen(b);
  i=0;
  j=0;
  while(a[i]!=0)
   {  
     if(a[i]==b[j])
       {  i++;
             j++;
       }
      else 
      { i=i-j+1; 
        j=0;
      };
      if(b[j]=='\0')
       { s=j;
         j=0;
        for(m=0;a[m]!=0;m++)
        { t=m;
          for( ; ti && a[t]!=0 ;t++)
            c[t]=a[t];  
        }    
       }
   }
   c[t]='\0';
   puts(c);    
}

for( ; ti && a[t]!=0 ;t++) 这行的 ti 是啥?
最后找到匹配字符串后删除过程太奇怪,双循环完全没必要。而且不需要加c数组就可以,更简单

#include <stdio.h>
int main(void)
{ 
    int i,j,n,k,m=0,t=0,s,lon=0;
    char a[501],b[501];
    gets(a);
    gets(b);
    i=0;
    j=0;
    k=0;
    do
    {
        k=0;
        i=0;
        j=0;
        while(a[i]!=0)
        {  
            if(a[i]==b[j])
            {  
                i++;
                j++;
            }
            else 
            { 
                i=i-j+1; 
                j=0;
            }
            if(b[j]=='\0')
            { 
                k++;
                m=i;
                do
                {
                    a[m-j] = a[m];
                }while(a[m++] != 0);
                i=i-j;
                j=0;
            }
        }
    }while(k!=0);
    puts(a); 
    return 0;
}

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632