没什么说的,常规思路:

函数原型:const char* StrStr(const char *str1, const char *str2)

方法一:

str1:源字符串;

str2:需要查找的目的字符串;

#pragma once
#include<assert.h> const char* My_strstr(const char* str1, const char* str2)
{
assert(nullptr != str1 && nullptr != str2); //断言 //如果目的字符串不是只有\0,走起
if ('\0' != *str2)
{
while ('\0' != *str1)
{
for (int i = 0; *(str1 + i) == *(str2 + i); ++i)
{
if ('\0' == *(str2 + i + 1)) //这里没用后置加加,而是*(str2+i+1)中只是加了一个1
//目的是想知道str2 + i的下一个字符是不是\0
{
return str1;
}
}
++str1;
}
return nullptr;
} //目的字符串是空的
else
{
return str1;
}
} void Test()
{
char a[] = "abcdefgh";
char b[] = "cde";
const char* result = My_strstr(a,b);
}

方法二:

源字符串:str1

目的字符串:str2

const char* My_strstr(const char* str1, const char* str2)
{
assert(nullptr != str1 && nullptr != str2); //断言 for (int i = 0; str1[i] != '\0'; ++i)
{
int temp = i; //记录源字符串的每次的其实位置,有后边改变;
int j = 0;
while (str1[i++] == str2[j++])
{
if (str2[j] == '\0') //这里的j很巧,由于while()中的条件结束,
//j就j++了,所以j是指向下一个的
{
return &str1[temp];
}
}
i = temp; //while 出来,不相等,str1回到相同的几个之前
}
return nullptr;
}

赐教!

库函数strstr的实现的更多相关文章

  1. 【c语言】模拟库函数strstr

    // 模拟库函数strstr #include <stdio.h> #include <assert.h> const char* my_strstr(const char * ...

  2. C语言中库函数strstr的实现

    在C语言中库函数strstr()函数表示在一个字符串str1中查找另一个字符串str2,如果查到则返回str2在str1中首次出现的位置,如果找不到则返回null. char* strstr(char ...

  3. C语言库函数strstr、strch比较

    该库函数包含在<string.h>头文件中,函数原型:extern char *strstr(char *str1, const char *str2);使用方法 char *strstr ...

  4. c语言,string库函数strstr实现

    说明: 原型:char *strstr(char *haystack, char *needle); 用法:#include <string.h> 功能:从字符串haystack中寻找ne ...

  5. C库函数strstr分析

    C标准库<string.h> 函数声明: char* strstr(char* const _String, char const* const _SubString) 返回值: SubS ...

  6. C 库函数 - strstr()

    定义 char *strstr(const char *haystack, const char *needle) 参数 haystack -- 要被检索的 C 字符串. needle -- 在 ha ...

  7. LeetCode: Implement strStr() [027]

    [题目] Implement strStr(). Returns a pointer to the first occurrence of needle in haystack, or null if ...

  8. C语言:自定义一个查找字串的功能函数,类似于<string.h>中的strstr()

    //自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *st ...

  9. 从头到尾彻底理解KMP

    从头到尾彻底理解KMP 作者:July 时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进. 1. 引言 本KMP原文最初写于2年多前的201 ...

随机推荐

  1. 移动端的silder,未封装,基于zepto的touch模块,有参照修改过touch的bug

    <!--html模块--> <header class="appoin-head"> <ul> <li class="aa&qu ...

  2. Asp.net mvc 5 razor

    一开始学习dotnet的web项目是Asp.net webform,完全不理解项目为什么要这样设计,就简单的使用ajax调用后台的代码不好吗?为什么还要搞一些什么代码后置的东东. 还有就是有各种加载问 ...

  3. 【BZOJ3670】动物园(KMP算法)

    [BZOJ3670]动物园(KMP算法) 题面 BZOJ 题解 神TM阅读理解题 看完题目之后 想暴力: 搞个倍增数组来跳\(next\) 每次暴跳\(next\) 复杂度\(O(Tnlogn)\) ...

  4. 【BZOJ1216】操作系统(堆,模拟)

    [BZOJ1216]操作系统(堆,模拟) 题面 题目描述 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示 ...

  5. [Luogu3455][POI2007]ZAP-Queries

    BZOJ(权限题) Luogu 题目描述 Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Securit ...

  6. animate 动画滞后执行的解决方案

    jQuery动画: animate 容易出现连续触发.滞后反复执行的现象: 针对 jQuery 中 slideUp.slideDown.animate 等动画运用时出现的滞后反复执行等问题的解决方法有 ...

  7. 访问不了firefox附加组件页面怎么办

    最近重新使用火狐浏览器的时候发现访问不了firefox附加组件页面了,一直是一个空白的页面,估计是被墙的原因,于是网上查了查,说是修改hosts即可,我修改后就可以正常访问了.现在分享出来: 在hos ...

  8. Excel IF函数怎么用

    本例主要介绍Excel表格中IF函数的用法,包括基本用法.单条件.多条件表达及在数组函数中的用法和在数组函数中怎么表达多条件和单条件. 工具/原料   Excel IF函数语法介绍:   1 IF函数 ...

  9. 使用localtunne一分钟搞定微信公众号接入

      记得15年那个刚刚进入工作的时候,公司有个微信公众号的项目,那个时候微信官方没有什么调试工具,也没有什么比较好的本地调试工具.当时有个功能需要调用微信JSSDK里面的扫一扫的功能.由于本地不能调试 ...

  10. Javascript 基础知识2017-03-17

    JavaScript语法 1.单行注释:// 多行注释:*/ 2.基本数据类型:            int 整数型   (不等于四舍五入,把小数舍去)            string 字符型  ...