6-4 设计函数 locatesubstr 哪里出问题了

6-4 设计函数 locatesubstr 

设计函数 char *locatesubstr(char *str1,char *str2),查找str2指向的字符串在str1指向的字符串中首次出现的位置,返回指向该位置的指针。若str2指向的字符串不包含在str1指向的字符串中,则返回空指针NULL。 注意这里必须使用指针而不是数组下标来访问字符串。

函数接口定义:

函数接口如下:
char *locatesubstr(char *str1,char *str2);

在这里解释接口参数。例如:其中 str1 和 str2 都是用户传入的参数,其含义如题面所述 。若查找成功则返回指向该位置的指针,若失败则返回空指针。

裁判测试程序样例:

函数被调用进行测试的例子如下:
#include <stdio.h>

char *locatesubstr(char *str1,char *str2);
int main()
{
    char str1[505],str2[505];
    char *p;
    gets(str1);
    gets(str2);
    p=locatesubstr(str1,str2);

    if(p==NULL)    printf("NULL!\n");
    else    puts(p);

    return 0;
}

/* 请在这里填写答案 */

输入样例:

didjfsd dabcxxxxxx
abc

输出样例:

abcxxxxxx

以下是我自己做的答案

char *locatesubstr(char *str1,char *str2)
{
    int i=0,j=0,c=0,h;
    while(*(str1+i))
    {       
        if(*(str1+i)==*(str2+j))
        {h=i;i++;j++;
       for(;*(str1+i)==*(str2+j);i++,j++)
            
            if(*(str2+j))
                c=1;
         break;
            }
        else i++;
        if(c==1)
            return (str1+h);
        else
            return (NULL);
}

发现少了一个括号,加上还是过不了:

char *locatesubstr(char *str1,char *str2)
{
    int i=0,j=0,c=0,h;
    while(*(str1+i))
    {       
        if(*(str1+i)==*(str2+j))
        {h=i;i++;j++;
       for(;*(str1+i)==*(str2+j);i++,j++)
            
            if(*(str2+j))
                c=1;
         break;
            }
        else i++;
      }
        if(c==1)
            return (str1+h);
        else
            return NULL;
}