//自定义一个字符串字串查找标准库函数strstr()

#include<stdio.h>

#include<string.h>

char* myStrstr(char *str1,char *str2);

int main()

{

    char *str1 = "hello worl world ld";

    char *str2 = " world ";

    puts(myStrstr(str1,str2));

    return 0;

}

char *myStrstr(char *str1,char *str2)

{

    static int count=0;

    const char *p = str2;

    char *pt;

    while(*(str2++))

    {    

      while(*(str1++))

      {

         //如果str2和str1第一个字符一样,接着第二个字符的比较,count累加

        if(*(str2-1)==*(str1-1))

        {

          count++;

          break;

        }

         //如果str2和str1第一个字符不一样,接着对str1进行遍历,直到结尾

        else if(*(str2-1)!=*(str1-1) && count<strlen(p))

        {

          continue;

        }

         //如果str2和str1前几个字符一样,再进行比较时不一样,str2从头开始

        else

        {

          str2 = str2 - count;

          break;

        }

      }

      if(*str2=='\0' && count==strlen(p))

        pt = str2-count;//找到字串,将指针移到str2首地址并返回

      else

        pt = NULL;//没有找到字串,返回空值NULL

     }

return pt;

}

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

  1. [C++] 习题 2.18 倒序查找字串

    目录 前置技能 字符串 KMP 算法 需求描述 概要设计 具体实现 string.cpp strmatching.cpp main.cpp 倒序查找字串: 设计一个算法,在串 str 中查找字串 su ...

  2. java之字符串中查找字串的常见方法

    1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引.      int indexOf(String str, int startIndex):从指定 ...

  3. 【转】谈一谈PHP字串清除空格函数不安全

    清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xb ...

  4. C语言string.h中常用字符函数介绍

    原文:http://www.cnblogs.com/xuwenmin888/archive/2013/05/03/3057883.html strcpy 函数名: strcpy 功 能: 拷贝一个字符 ...

  5. Vue 自定义一个插件的用法、小案例及在项目中的应用

    1.开发插件 install有两个参数,第一个是Vue构造器,第二个参数是一个可选的选项对象   MyPlugin.install = function (Vue, options) {   // 1 ...

  6. delphi两个取字串长度的函数strlen,length

    ━━━━━━━━━━━━━━━━━━━━━━━━━━ [strlen]PChar 串专用函数:串长度 procedure TForm1.BitBtn1Click(Sender: TObject); v ...

  7. python 封装一个取符串长度的函数

    def getStrLen(str): return len(str) print(getStrLen("dsa456das4dasdas21"))

  8. 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!

    split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator],[limit])参数:stringObj   必选项.要被分解的 ...

  9. 【字符串】BZOJ上面几个AC自动机求最为字串出现次数的题目

    (一下只供自己复习用,目的是对比这几个题,所以写得不详细.需要细节的可以参考其他博主) [BZOJ3172:单词] 题目: 某人读论文,一篇论文是由许多(N)单词组成.但他发现一个单词会在论文中出现很 ...

随机推荐

  1. 异常类Exception(String message, Throwable cause)中的cause理解

    这个在构造函数里面竟然有一个Throwable,感觉有些奇怪. 1. Throwable cause 这里cause要传一个Throwable的子类异常进去么? 是引起这个异常的异常,如果这个值是空值 ...

  2. linux 下rocketmq安装

    一.解压mq(/data下)tar -zxvf Rocketmq-3.5.8.tar.gz 二.修改配置文件vi /etc/profileexport rocketmq=/data/alibaba-r ...

  3. Windows 服务器部署 asp.net core

    踩坑日记与 Windows 服务器部署 asp.net core 指南. 准备 操作系统:Windows Server 2008 R2 或更高版本 文件: Microsoft Visual C++ 2 ...

  4. idea集成项目管理工具 --- Maven 并且【配置tomcat】

    介绍: 1.项目管理工具 POM    Porject Object Model 2.可以管理项目中的的jar包依赖 3.maven   jar包中央仓库:http://mvnrepository.c ...

  5. [ 转载 ] Java基础13--equals方法

    一.equals方法介绍 1.1.通过下面的例子掌握equals的用法 1 package cn.galc.test; 2 3 public class TestEquals { 4 public s ...

  6. Linux设备驱动模型(sysfs)

    <总线模型概述> 随着技术的发展,系统的拓扑结构也越来越复杂,对热插拔.跨平台移植性的要求越来越高,从Linux2.6内核开始提供全新的设备模型.将所有的驱动挂载到计算机的总线上(比如US ...

  7. hdu 1325 判断有向图是否为树

    题意:判断有向图是否为树 链接:点我 这题用并查集判断连通,连通后有且仅有1个入度为0,其余入度为1,就是树了 #include<cstdio> #include<iostream& ...

  8. 理解JavaScript中BOM和DOM的关系

    JavaScript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,IE和其他的浏览器风格迥异.对象是JavaScript最重要的API,包含 ...

  9. Unity3D中的UnitySendMessage方法的使用

    UnitySendMessage(“string”,“string”, ***),这是方法,我们至少需要传入两个参数,第一个参数为unity中的一个gameobject名称,第二个参数为这个gameo ...

  10. RPM 打包技术与典型 SPEC 文件分析

    一 .rpm 介绍 1. 概述 RPM全称是 Red Hat Package Manager(Red Hat包管理器).几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装.更新和卸载软件. ...