请问有没有人帮我看一下下面的程序为啥能够成功查找到子串

#include<stdio.h>
#include<string.h>
int substring(char s[], char sub[]);
int main()
{
char s[99],sub[99];
gets(s);
gets(sub);
if(substring(s,sub)==-1)
printf("%s子串没有找到!",sub);
else
printf("子串%s在主串%s中第一次出现的位置是%d",sub,s,substring(s,sub));
}
int substring(char s[], char sub[])
{
int i,j,flag,x,l=0;
for(i=0;sub[i]!='\0';i++)
{
l++;
}
for(i=0;sub[i]!='\0';i++)
{
for(j=i;s[j]!='\0';j++)
{
if(sub[i]==s[j])
{
flag=1;x=j;
break;
}
else{
flag=0;
continue;
}
}
}
if(flag==0)return -1;
return x+2-l;
}