C语言函数strstr 分析及实现

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

原型:char *strstr(const char *str1, const char *str2);

#include<string.h>

找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。

Returns a pointer to the first occurrence of strSearch in str, or NULL if strSearch does not appear in str. IfstrSearch points to a string of zero length, the function returns str.

#include <stdio.h>#include <conio.h>#include <string.h>#include <stdlib.h>#pragma warning (disable:4996)char *mystrstr(char *s1,char *s2);int main(void)char *s="Golden Global View"char *l="ob";   //char *l="" char *p; system("cls"); p=mystrstr(s,l); if (p!=NULL) {  printf("%s\n",p); } else {  printf("Not Found!\n"); }    getch(); return 0;}/*FROM 百科*/char *mystrstr(char *s1,char *s2)int n; if (*s2)                      //两种情况考虑 {        while(*s1)                 {            for (n=0;*(s1+n)==*(s2+n);n++)            {    if (!*(s2+n+1))            //查找的下一个字符是否为'\0'    {     return (char*)s1;    }            }   s1++;  }  return NULL; } else {  return (char*)s1; }}

另一个实现:

charstrstr (buf, sub)     register char *buf;     register char *sub;{    register char *bp;    register char *sp;    if (!*sub)      return buf;    while (*buf)    {        bp = buf;        sp = sub;        do {            if (!*sp)              return buf;        } while (*bp++ == *sp++);        buf += 1;    }    return 0;}

又一个实现:

#include <iostream>#include <string>using namespace std;//c语言实现strstrconst char* isSub(const char* str, const char *subs)//特殊情况 if(!*subs)  return str; const char* tmp=str; while (*tmp!='\0') {  //用于每次将父串向后移动一个字符  const char* tmp1=tmp;  //记录子串地址  const char* sub1=subs;  while (*sub1!='\0'&&*tmp1!='\0')  {   //若不相等则跳出,将父串后移一个字符   if (*sub1!=*tmp1)    break;   //若相等且子串下一个字符是末尾则是这个父串的子串   if (*sub1==*tmp1&&*(sub1+1)=='\0')    return tmp;   //若相等则继续比较下一个字符   if (*sub1==*tmp1)   {    sub1++;    tmp1++;   }  }  tmp++; } return NULL;}int main()char* str1="ababcdddb"char* str=""const char *res=isSub(str1,str); if (res!=NULL) {  cout << res << endl; } else  cout << "null" << endl//cout << isSub(str1,str) << endl; return 0;}


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值