c 语言 求子串在主串中的位置

写了一个简单的求子串在主串第一次出现的位置的方法

int index(char str[],char substr[]){//求字串第一次出现的位置

int i=0,j=0,num=0;

while(str[i]!='\0'&&substr[j]!='\0'){

   if(str[i]!=substr[j]){

         j=0;i=i+1; num=i;}
   else{ 
        i++;j++;
   }

}
if(substr[j]=='\0')
return num;

肯定有遗漏的情况,希望高手补充,谢谢

第一:
if(substr[j]=='\0')
return num;
错了,
假如这句话不执行,则没有返回值。

第二:
加入字串1为:11234,字串2为:12
你的代码判断不出来,你可以自己分析一下原因

第三:
一点个人建议,编程风格问题:
不要使用i,j这类的名字了,改为 str1_pos,str2_pos一类的(pos是position简写的)

谢谢啦,编程风格真的很重要的。