源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于C语言函数strstr()的分析以及实现

  • 时间:2022-11-29 09:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于C语言函数strstr()的分析以及实现
[b]原型:char *strstr(const char *str1, const char *str2); #include<string.h> [/b]找出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.
[u]复制代码[/u] 代码如下:
#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;  } }
另一个实现:
[u]复制代码[/u] 代码如下:
char *  strstr (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; }
又一个实现:
[u]复制代码[/u] 代码如下:
#include <iostream> #include <string> using namespace std; //c语言实现strstr const 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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部