a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

關于C語言函數strstr()的分析以及實現

2020-01-26 16:00:03
字體:
來源:轉載
供稿:網友
原型: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;
 }
}

另一個實現:
復制代碼 代碼如下:

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;
}

又一個實現:
復制代碼 代碼如下:

#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;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 一区二区精品在线 | 久久网日本 | 日韩在线你懂的 | 亚洲视频免费观看 | 国产精品久久久久久久7电影 | 国产一区二区三区四区在线观看 | 色婷婷综合久久久久中文一区二区 | 一区二区在线电影 | 亚洲国产精品一区 | 逼逼av| 在线日韩欧美 | 99视频在线免费观看 | 成年人视频在线免费观看 | 99亚洲| 亚洲精品美女视频 | 日本黄色免费网站 | 在线观看日韩av | 一区二区三区在线不卡 | 青青草视频免费观看 | 亚洲精品66| 最新精品在线 | 国产精品毛片久久久久久久 | 日韩精品久 | 日韩成人在线免费视频 | 国产一区二区三区久久久久久久久 | 亚洲一区二区三区四区的 | 国产成人一区二区三区 | 久久久久一区 | 日本wwwwww| 午夜三区 | 91精品国产91久久久久久吃药 | 欧美激情综合五月色丁香小说 | 麻豆国产免费 | 色综合久久久久久久 | 成人免费视频视频在线观看 免费 | 日韩高清在线 | 欧美电影一区 | 日韩精品专区在线影院重磅 | 久久成人18免费网站 | 夜夜久久| 久久国产一区二区 |