一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 關于C語言函數strstr()的分析以及實現

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

2020-12-17 15:13C語言教程網 C/C++

以下是對C語言中strstr()函數的使用進行了詳細的分析介紹,需要的朋友可以參考下

原型: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;
}

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: aaa免费看 | 欧美性野久久久久久久久 | 国产欧美日韩精品在线 | 亚洲成人一区二区 | 青青草在视线频久久 | 免费日本在线 | 成人国产精品一区二区不卡 | 亚洲国产福利精品一区二区 | 美女gif趴跪式抽搐动态图 | 日韩一二三 | 国产精品第| 波多野结衣作品在线观看 | 掀开奶罩边躁狠狠躁软学生 | 波多野结衣两女调教 | 丝袜捆绑调教视频免费区 | 国产精彩对白综合视频 | 美女张开大腿让男人桶 | 调教肉文 | 好妈妈7在线观看高清 | 肉色欧美久久久久久久蜜桃 | 调教催眠| 精品综合久久久久久88小说 | yellow高清视频日本动漫 | 亚洲国产精久久久久久久 | 2021最新国产成人精品免费 | 9久热久爱免费精品视频在线观看 | 美女视频在线观看视频 | 俄罗斯极品h在线 | 免费又爽又黄禁片视频在线播放 | 美女林柏欣21p人体之仓之梦 | 国产精品思瑞在线观看 | 性xxx欧美| 四虎2023| 国产成人精品一区二区仙踪林 | 三级黄色片在线观看 | 小草高清视频免费直播 | 洗濯屋动漫在线观看 | 色花堂中文字幕98堂网址 | 日韩av.com| 日韩高清一区二区 | 九九精品视频在线观看 |