原型: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语言实现strstrconst 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;}elsecout << "null" << endl;//cout << isSub(str1,str) << endl;return 0;
}

C语言函数strstr()分析及实现相关推荐

  1. C语言函数strstr 分析及实现

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原型:c ...

  2. C语言学习笔记---字符串查找函数strstr()和strpbrk()函数

    strstr()函数   C语言中如何向查找一个字符串中是否包含另一个字符串,可以使用strstr()函数.使用示例如下: int main(int argc, char *argv[]) {char ...

  3. C语言函数: 字符串函数及模拟实现strtok()、strstr()、strerror()

    C语言函数: 字符串函数及模拟实现strtok().strstr().strerror() strstr()函数: 作用:字符串查找.在一串字符串中,查找另一串字符串是否存在. 形参: str2在st ...

  4. 如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat

    用C语言模拟实现字符函数与字符串函数 strstr.memcpy.memmove.strlen.strcpy.strcmp.strcat 若使用本文相关代码,还请动手点个赞!!! #define _C ...

  5. C语言函数参数传递的分析

    一.值传递和指针传递的概念 (一)值传递 值传递,即按值传递参数,按值传递参数时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的 ...

  6. C语言函数递归调用实验报告,C语言函数的递归和调用实例分析

    一.基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己. 要点: 1.C语言函数可以递归调用. 2.可以通过直接或间接两种方式调用.目前只讨论直接递归调用. ...

  7. R语言构建生存分析(survival analysis)模型示例

    R语言构建生存分析(survival analysis)模型示例 生存分析处理的是预测特定事件将要发生的时间.它也被称为失败时间分析或死亡时间分析.例如,预测癌症患者存活的天数,或者预测机械系统将要失 ...

  8. C++应用程序性能优化(三)——C++语言特性性能分析

    C++应用程序性能优化(三)--C++语言特性性能分析 一.C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高 ...

  9. 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

最新文章

  1. Win8离线安装.net framework组件
  2. 使用SDE的一点体会
  3. StrictMode使用和查询联系人手机联系人和sim卡联系人
  4. c语言食堂饭卡管理课程设计,第十一章 C语言课程设计—饭卡管理程序.docx
  5. linux开启wifi热点命令,deepin Linux 开启wifi热点
  6. PTA 7-2 不变初心数(15分)思路简单
  7. 角谷猜想:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 3 加 1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到 1。如假定初始整数为 5,计算过程分别为 16、
  8. linux不能删除文件命令,无法删除文件的解决办法(rm命令的使用)
  9. win10 官方纯净版安装详细图解
  10. http://fir.im免费发布内测版app和用企业版证书发布app
  11. 【Nape教程】Nape刚体碰撞检测
  12. 高数 | 洛必达法则的隐藏细节、广义洛必达法则(分母无穷直接洛必达)使用条件
  13. 多功能手持读数仪VH03如何连接手机蓝牙
  14. Centos7安装cuda10.1
  15. 一文搞懂Grid 布局
  16. FEKO学习:后处理模块——POSTFEKO
  17. HALCON 算子 find_marks_and_pose
  18. C++ 不定参宏展开
  19. 利用数码管从左向右和从右向左显示学号
  20. 直动式球形止回阀DCV-080-PB、DCV-100-PB

热门文章

  1. 模型评估方法和性能指标
  2. ubuntu_subversion_mantis_testlink使用ldap认证
  3. openstack中glance组件images的全部python API 汇总
  4. Android手机在获取root权限下的抓包过程
  5. 《Google软件测试之道》- Google软件测试介绍
  6. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
  7. Install matplotlib Error: src/ft2font.h:16:22: fatal error: ft2build.h: No such file or directory
  8. onclick事件中加href
  9. 2018-2019-1 20165226 《信息安全系统设计基础》第8周学习总结
  10. 关于 @ngrx/Store 下 obj 的扩展问题