在oj上提交没过,请解答

#include<stdio.h>
#include<string.h>
int main()
{
char a[200],s[200];
gets(a),gets(s);
int k,i,j=0,b=0,l1=strlen(a),l2=strlen(s);
if(l1<l2)
{
for(i=0;i<l2;i++)
{
if(a[j]==s[i])
{
for(k=1;k<l1;k++)
{
if(a[j+k]==s[i+k])
{
b=1;
}
else
{
b=0;
break;
}
}
}
if(b==1) break;
}
if(b==1) printf("%s is substring of %s",a,s);
else printf("No substring");
}
if(l1>l2)
{
for(i=0;i<l1;i++)
{
if(s[j]==a[i])
{
for(k=1;k<l2;k++)
{
if(s[j+k]==a[i+k])
{
b=1;
}
else
{
b=0;
break;
}
}
}
if(b==1) break;
}
if(b==1) printf("%s is substring of %s",s,a);
else printf("No substring");
}

if(l1==l2) printf("%s is substring of %s",s,a);

}
输入两个字符串,验证其中一个串是否为另一个串的子串。

输入格式
输入两个字符串, 每个字符串占一行,长度不超过 200200 且不含空格。

输出格式
若第一个串 s_1s
1

是第二个串 s_2s
2

的子串,则输出"(s1) is substring of (s2)";

否则,若第二个串 s2是第一个串s1的子串,输出"(s2) is substring of (s1)";

否则,输出"No substring"。

Sample Input
abc
dddncabca
Sample Output
abc is substring of dddncabca

img


最后面那个字符串长度相等怎么就是子串了?
最后面的if改为

else if(l1==l2)
    {
        if(strcmp(a,s)==0)
            printf("%s is substring of %s",s,a);
        else
            printf("No substring");
    }
}
#include <stdio.h>

#define N 200

// Return 1 if s2 is substring of s2, otherwise return 0
int issubstr(const char *s1, const char *s2)
{
    while (*s1)
    {
        const char *p = s1;
        const char *q = s2;
        while (*p && *q && *p == *q)
        {
            p++;
            q++;
        }
        if (*q == '\0')
            return 1;
        s1++;
    }
    return 0;
}

int main()
{
    char s1[N], s2[N];
    scanf("%s%s", s1, s2);
    if (issubstr(s1, s2))
        printf("%s is substring of %s\n", s2, s1);
    else if (issubstr(s2, s1))
        printf("%s is substring of %s\n", s1, s2);
    else
        printf("No substring\n");
    return 0;
}