strstr函数用法_malloc函数的用法举例

strstr函数用法_malloc函数的用法举例strstr编辑strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。C语言函数编辑


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

strstr

 
编辑

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

 

C语言函数

编辑

包含文件:
string.h
函数名: strstr
函数原型:
1
extern 
char 
*
strstr
(
char 
*str1, 
const 
char 
*str2);

语法:
1
* 
strstr
(str1,str2)

str1: 被查找目标 string expression to search.
str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
例子:
1
2
3
char 
str[]=
"1234xyz"
;
char 
*str1=
strstr
(str,
"34"
);
cout << str1 << endl;

显示的是: 34xyz


函数实现

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

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

3. GCC-4.8.0
1
2
3
4
5
6
7
8
9
10
11
char 
*
strstr
(
const 
char
*s1,
const 
char
*s2)
{
    
const 
char
*p=s1;
    
const 
size_tlen=
strlen
(s2);
    
for
(;(p=
strchr
(p,*s2))!=0;p++)
    
{
        
if
(
strncmp
(p,s2,len)==0)
            
return 
(
char
*)p;
    
}
    
return
(0);
}


  


应用举例

// strstr.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <syslib.h>
#include <string.h>
main()
{
    
char 
*s=
"GoldenGlobalView"
;
    
char 
*l=
"lob"
;
    
char 
*p;
    
clrscr();
    
p=
strstr
(s,l);
    
if
(p)
        
printf
(
"%s"
,p);
    
else
        
printf
(
"NotFound!"
);
    
getchar
();
    
return0;
}

//功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”
(假设xxx和yyy都是一个未知的字串)
1
2
3
4
5
6
7
char 
*s=”string1onexxxstring2oneyyy”;
char 
*p;
p=
strstr
(s,”yyy”);
if
(p!=NULL)
    
printf
(“%s”,p);
else
    
printf
(
"notfound\n"
);

说明:如果直接写语句p=strstr(s,”one”),找到的是onexxxstring2oneyyy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
char 
*mystrstr(
char
*s1,
char
*s2)
{
    
if
(*s1==0)
    
{
        
if
(*s2)
            
return 
(
char
*)NULL;
        
return 
(
char
*)s1;
    
}
    
while
(*s1)
    
{
        
int 
i=0;
        
while
(1)
        
{
            
if
(s2[i]==0)
                
return 
s1;
            
if
(s2[i]!=s1[i])
                
break
;
            
i++;
        
}
        
s1++;
    
}
    
return 
(
char
*)NULL;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167615.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue上传图片_解调的三种方式

    Vue上传图片_解调的三种方式项目中需要上传图片可谓是经常遇到的需求,本文将介绍3种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来。没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景。假设我们要做一个后台系统添加商品的页面,有一些商品名称、信息等字段,还有需要上传商品轮播图的需求。我们就以Vue、Element-ui,封装组件为例子聊聊如何实现这个功能。其他框架或者不用框架…

    2022年10月16日
  • java线程池springboot_springboot线程池的使用和扩展(转)「建议收藏」

    java线程池springboot_springboot线程池的使用和扩展(转)「建议收藏」实战环境windowns10;jdk1.8;springboot1.5.9.RELEASE;开发工具:IntelliJIDEA;实战源码本次实战的源码可以在我的GitHub下载,地址:git@github.com:zq2599/blog_demos.git,项目主页:https://github.com/zq2599/blog_demos这里面有多个工程,本次用到的工程为threadpoold…

    2022年6月17日
  • tcp 校验和_tcp如何保证有序

    tcp 校验和_tcp如何保证有序1.tcp校验和接收方在接收数据时检验数据包在传输过程中是否改变的验证方式发送方将数据体取反码,检验和也取反码相加,高于4bit的和低于4bit的相加,得到的就是校验和,保存在tcp头的校验和字段,接收方将数据取反码,校验和取反码,相加为1111则数据包没有异常,否则丢弃数据包。参考此文2.为什么Internet协议:IP,ICMP,IGMP,UDP,TCP收到有…

    2022年10月29日
  • c语言里怎么设立优先级,细说C语言优先级

    c语言里怎么设立优先级,细说C语言优先级0.为什么要掌握优先级想想这两个问题:a.读别人的代码,遇到优先级问题看不懂,怎么办?b.一堆的括号,美观吗?本想贴一张画来装饰墙壁,却用了一堆纸来固定!有人说代码写多了,自然就会了。这个是很宽泛的说法。看你写的代码的水准,有些东西可能你一直都接触不到,何谈熟练。有些东西一定要梳理,总结。1.优先级1.1优先级图表优先级最高者不是真正意义上的运算符,包括:数组下标,函数调用,结构体成员…

    2022年6月16日
  • PHP递归算法_php递归函数详解

    PHP递归算法_php递归函数详解先设置数据在本地数据库,设置前要先了解pid字段的关系。如果做成菜单还需添加一个路由字段,自行定义。第一种方式先将数据提取出转换成数组。重点是Yarray方法里的递归方式。接下来进行解析方式。重点:一定要在进行递归之前声明一个静态数组,不然会导致数组覆盖。剩下的就是注释的内容也就是判断父节点与节点来判断等级。这步指来回方法调用本身进行处理递归。最后数据会变成其中关系为pid数值存在与id下的下级关系,level为处于第几级;我们来输出一下看看结.

    2022年8月11日
  • 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:zheng gitee.com/shuzheng/zheng/blob/master/README.md 前言…

    2021年6月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号