在字符串中查寻子字符串

在字符串中查找子字符串。
怎样用C语言实现在字符串中查找子字符串的位置,如果找不到则返回NULL.

------解决方案--------------------
//供lz参考
C/C++ code

char * maxString(char const * src1,char const * src2) 
{   
    int i,j;
    int index = 0,lastindex = 0,len = 0,lastlen = 0;
    char * laststr = (char *)malloc(20);
    for (i=0; src1[i] != '\0'; i++)
    {
        for (j=0; src2[j] != '\0'; j++)
        {
            if (src1[i+len] == src2[j])
            {
                if(!len) 
                {
                    index = j;
                }
                len++;
            } 
            else
            {
                if (len)
                {
                    if(lastlen < len)
                    {
                        lastlen = len;
                        lastindex = index;
                    }
                    len = 0;
                    j = index;
                }
            }
        }
    }
    len = 0;
    while(lastlen--)
    {
        laststr[len++] = src2[lastindex++];
    }
    laststr[len] = '\0';
    return laststr;
}

------解决方案--------------------
用 strstr 不就行了吗。
------解决方案--------------------
C语言中本身就有一个库函数strstr帮你解决这个问题啊 

原型:extern char *strstr(char *haystack, char *needle);

用法:#include <string.h>
  
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
  
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

C/C++ code

      // strstr.c
      
      #include <syslib.h>
      #include <string.h>

      main()
      {
        char *s="Golden Global View";
        char *l="lob";
        char *p;
        
        clrscr();
        
        p=strstr(s,l);
        if(p)
          printf("%s",p);
        else
          printf("Not Found!");

        getchar();
        return 0;
      }

------解决方案--------------------
有库函数 strstr哈
直接拿来用就行了
------解决方案--------------------
探讨

用 strstr 不就行了吗。

------解决方案--------------------
C/C++ code
#include <stdio.h> 

char * maxString(char const * src1,char const * src2);

int main()
{
char a[100],b[100]="abcdefg",c[100]="abc";
char *p=a;
p=maxString(b,c);
printf("%s\n",p);
system("pause");
return 0;
}
/*整体来说就是src2中从开始每一位和src1中的每个字符比较有相同len++,继续下一位的比较,一旦没有执行else*/
char* maxString(char const * src1,char const * src2)
{
int i,j;
int index = 0,lastindex = 0,len = 0,lastlen = 0;
char *laststr = (char *)malloc(20);
for (i=0; src1[i] != '\0'; i++)
  {
    for (j=0; src2[j] != '\0'; j++)
    {
      if (src1[i+len] == src2[j])//如果说j中有字符和src1[i+len]相等
      {
        if(!len)
        {
          index = j;//len等于0,index值等于j(len等于0的情况的处理)
        }
        len++;//计数器加一
      }
      else//一直到src2中j位置和src1中不相等
      {
        if (len)//len计数器有值,表示src2中有多少个字母和src1相同
        {
          if(lastlen < len)
          {
            lastlen = len;
            lastindex = index;