C语言字符串,求改错

img

#include
#include
int main()
{
    int i,f=0,t=0,k,j,l,m;
    char S[100];
    char T[100];
    char U[100];
    scanf("%s",S);
    scanf("%s",T);
    l=strlen(S);
    for(i=l;i>=0;i--)
    {
        for(k=0;T[k]!='\0';k++)
        {
            if(S[i]==T[k])
            {
                f=1;
                break;
            }
        }
        if(f==0)
        {
            if(t==0)
            {
                U[t]=S[i];
                t++;
            }
            for(m=0;mif(S[i]==U[m])
                break;
            }
            if(m==t)
            {
                U[t]=S[i];
                t++;
            }
        }
    }
    U[t]='\0';
    printf("%s",U);
    return 0;
}

求问哪里错了,为什么输不出数来?

S[i]越界了,你for循环赋值应该i=l-1啊,从这开始