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语言实现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()分析及实现相关推荐
- C语言函数strstr 分析及实现
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 原型:c ...
- C语言学习笔记---字符串查找函数strstr()和strpbrk()函数
strstr()函数 C语言中如何向查找一个字符串中是否包含另一个字符串,可以使用strstr()函数.使用示例如下: int main(int argc, char *argv[]) {char ...
- C语言函数: 字符串函数及模拟实现strtok()、strstr()、strerror()
C语言函数: 字符串函数及模拟实现strtok().strstr().strerror() strstr()函数: 作用:字符串查找.在一串字符串中,查找另一串字符串是否存在. 形参: str2在st ...
- 如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat
用C语言模拟实现字符函数与字符串函数 strstr.memcpy.memmove.strlen.strcpy.strcmp.strcat 若使用本文相关代码,还请动手点个赞!!! #define _C ...
- C语言函数参数传递的分析
一.值传递和指针传递的概念 (一)值传递 值传递,即按值传递参数,按值传递参数时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的 ...
- C语言函数递归调用实验报告,C语言函数的递归和调用实例分析
一.基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己. 要点: 1.C语言函数可以递归调用. 2.可以通过直接或间接两种方式调用.目前只讨论直接递归调用. ...
- R语言构建生存分析(survival analysis)模型示例
R语言构建生存分析(survival analysis)模型示例 生存分析处理的是预测特定事件将要发生的时间.它也被称为失败时间分析或死亡时间分析.例如,预测癌症患者存活的天数,或者预测机械系统将要失 ...
- C++应用程序性能优化(三)——C++语言特性性能分析
C++应用程序性能优化(三)--C++语言特性性能分析 一.C++语言特性性能分析简介 通常大多数开发人员认为,汇编语言和C语言比较适合编写对性能要求非常高的程序,C++语言主要适用于编写复杂度非常高 ...
- 【C 语言】C 语言 函数 详解 ( 函数本质 | 顺序点 | 可变参数 | 函数调用 | 函数活动记录 | 函数设计 ) [ C语言核心概念 ]
相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...
最新文章
- Win8离线安装.net framework组件
- 使用SDE的一点体会
- StrictMode使用和查询联系人手机联系人和sim卡联系人
- c语言食堂饭卡管理课程设计,第十一章 C语言课程设计—饭卡管理程序.docx
- linux开启wifi热点命令,deepin Linux 开启wifi热点
- PTA 7-2 不变初心数(15分)思路简单
- 角谷猜想:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘 3 加 1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到 1。如假定初始整数为 5,计算过程分别为 16、
- linux不能删除文件命令,无法删除文件的解决办法(rm命令的使用)
- win10 官方纯净版安装详细图解
- http://fir.im免费发布内测版app和用企业版证书发布app
- 【Nape教程】Nape刚体碰撞检测
- 高数 | 洛必达法则的隐藏细节、广义洛必达法则(分母无穷直接洛必达)使用条件
- 多功能手持读数仪VH03如何连接手机蓝牙
- Centos7安装cuda10.1
- 一文搞懂Grid 布局
- FEKO学习:后处理模块——POSTFEKO
- HALCON 算子 find_marks_and_pose
- C++ 不定参宏展开
- 利用数码管从左向右和从右向左显示学号
- 直动式球形止回阀DCV-080-PB、DCV-100-PB
热门文章
- 模型评估方法和性能指标
- ubuntu_subversion_mantis_testlink使用ldap认证
- openstack中glance组件images的全部python API 汇总
- Android手机在获取root权限下的抓包过程
- 《Google软件测试之道》- Google软件测试介绍
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- Install matplotlib Error: src/ft2font.h:16:22: fatal error: ft2build.h: No such file or directory
- onclick事件中加href
- 2018-2019-1 20165226 《信息安全系统设计基础》第8周学习总结
- 关于 @ngrx/Store 下 obj 的扩展问题