实现strstr功能,即在父串中寻找子串首次出现的位置

//实现strstr功能,即在父串中寻找子串首次出现的位置
#include<stdio.h>

bool Check( char* pParentStr, char* ChildString ) 
{
    while ((*pParentStr == *ChildString) && (*ChildString) && (*pParentStr))
    {
        pParentStr+=1;
        ChildString+=1;
    }
    if (*ChildString == '\0')
    {
        return true;
    } 
    else
    {
        return false;
    }


}

char* strString(char* ParentString,char* ChildString,int& pos)
{
    pos=-1;
    char* pParentStr=ParentString;
    while (*pParentStr)
    {
        pos+=1;
        bool bRet=Check(pParentStr,ChildString);
        if (bRet)
        {
            return pParentStr;
        }

        pParentStr+=1;
    }
    return NULL;
}

int main(int argc,char* argv[])
{
    //char* ParentString = "Happy birth birthday to you";
    //char* ParentString = "Ha birthday to you";
    char* ParentString = "Ha birth to you";
    char* ChildString = "birthday";
    int pos;
    char * ret=strString(ParentString,ChildString,pos);
    printf("%d: %s\n",pos,(ret==NULL)?"NULL":ret);

    return 0;
}

实现strstr功能,即在父串中寻找子串首次出现的位置

http://blog.sina.com.cn/s/blog_5dc7bbf80100v77b.html
#include<stdio.h>
char* strString(char* ParentString,char* ChildString)
{
 char* pParentString;
 char* pSubString;

 

 for(char* pTemp = ParentString;*pTemp;pTemp++)
 {
  pParentString = pTemp;
  pSubString = ChildString;
  pos += 1;

  while(*pParentString == *pSubString && *pSubString != '\0')
  {
   pParentString++;
   pSubString++;
  }
  if(*pSubString == '\0')
   return pTemp;
 }
 return NULL;
}

int main(int argc,char* argv[])
{
 char* ParentString = "Happy birthday to you";
 char* ChildString = "birthday";

 printf("%s\n",strString(ParentString,ChildString));

 return 0;
}

posted @ 2018-03-26 15:27  sky20080101  阅读(177)  评论(0)    收藏  举报