[C++]strstr内部实现的不同版本

1.1.Copyright 1990 Software Development Systems, Inc.

 1 char*strstr(constchar*s1,constchar*s2)
 2 {
 3  intlen2;
 4  if(!(len2=strlen(s2)))//此种情况下s2不能指向空,否则strlen无法测出长度,这条语句错误
 5  return(char*)s1;
 6  for(;*s1;++s1)
 7  {
 8  if(*s1==*s2&&strncmp(s1,s2,len2)==0)
 9  return(char*)s1;
10  }
11  returnNULL;
12 }

2.Copyright 1986 - 1999 IAR Systems. All rights reserved
 1 char*strstr(constchar*s1,constchar*s2)
 2 {
 3  intn;
 4  if(*s2)
 5  {
 6  while(*s1)
 7  {
 8  for(n=0;*(s1+n)==*(s2+n);n++)
 9  {
10  if(!*(s2+n+1))
11  return(char*)s1;
12  }
13  s1++;
14  }
15  returnNULL;
16  }
17  else
18  return(char*)s1;
19 }

3.GCC-4.8.0

 1 char*
 2  strstr(constchar*s1,constchar*s2)
 3  {
 4  constchar*p=s1;
 5  constsize_tlen=strlen(s2);
 6  for(;(p=strchr(p,*s2))!=0;p++)
 7  {
 8  if(strncmp(p,s2,len)==0)
 9  return(char*)p;
10  }
11 return(0);
12  }
 
时间: 2024-11-05 20:29:20

[C++]strstr内部实现的不同版本的相关文章

Mint17下安装TFS(taobao file sysytem)(带gcc4.8.2版本)

最近研究了一下淘宝的分布式文件系统TFS(Taobao file system). TFS(taobao file system)是一个高可扩展.高可用.高性能.面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据的存储:TFS使用C++语言开发,需要运行在64bit Linux OS上,本文介绍如何在Linux环境编译安装TFS. 在安装的过程中,遇到了许多奇葩的问题,在此吐槽一下淘宝的团队真是懒.TFS介绍里面提到他们团队是用的gcc4.1.2进行编译的,高版本可能会报错,不过

iOS 应用程序内部国际化,不跟随系统语言

前言:网络上关于iOS国际化的文章很多,但基本上都是基于跟随系统语言的国际化,笔者就不赘述了-0 – 今天要讲的是不跟随系统的切换语言版本方案,即程序内部的切换语言版本方案. 一.总则: 应用内部语言不跟随系统语言,由应用自己进行控制,通过配置多个语言文件,根据用户的选择动态获取不同文件夹下的语言文件,显示在界面上. 最后把用户选择的语言持久化到本地,下次运行时读取. 二.应用内的国际化 1.新建工程 新建Single View Application工程,取名为MyInternational.

release版本和debug版本

程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用 Release和Debug有什么不同 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能. Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll).这些DL

软件版本GA,RC,alpha,beta含义

软件版本GA,RC,alpha,beta含义 (1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release.Candidate.就是发行候选版本.和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! 是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版 (2)GA:(general availability) 比如:Ap

软件版本GA,RC,alpha,beta,Build 含义

(1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本.Release.Candidate.就是发行候选版本.和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! 是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版 (2)GA:(general availability) 比如:Apache Struts 2 GA 这是Apac

使用javascript访问kettle内部组件

使用javascript访问kettle内部组件 很少有ETL项目需求使用kettle标准步骤不能实现的.假设举例每条记录都需标记为来自那个数据库的信息,原数据库是通过DB连接设置的,那如何获取这些设置?(类型.主机.端口.数据库名称等) 在kettle中没有标准步骤可以实现,幸运的是javascript步骤可以访问kettle内部组件并实现以上需求. 访问kettle内部组件是_step_变量,其被自动设置在每个javascript步骤中.它代表javascript步骤本身,步骤的getTra

PHP strstr 字符串函数

定义和用法 strstr - 查找字符串的首次出现 版本支持 PHP4 PHP5 PHP7 支持 支持 支持 V5.3.0 新增可选的 before_needle 参数. V4.3.0 strstr() 成为二进制安全的. 语法 strstr (string $haystack , mixed $needle [, bool $before_needle = FALSE ] ) 返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串. 该函数区分大

Docker+JMeter+InfluxDB+Grafana从容器内部发起压测

1.自由定制JMeter镜像: Dockerfile文件: FROM java:8# 基础镜像 MAINTAINER yangjianliang <[email protected]># 作者 ENV http_proxy ""ENV https_proxy "" RUN mkdir /test && \ chmod -R 777 /test# 创建/test目录,用于存放jmx脚本.jtl结果文件.html测试报告文件 ENV JMET

php函数超实用

DateTime DateTime::addDateTime::diffDateTime::formatDateTime::modifyDateTime::sub... * DateInterval format character Description% Literal %Y Years, numeric, at least 2 digits with leading 0y Years, numericM Months, numeric, at least 2 digits with lea