C语言中的strstr函数的用法「建议收藏」

C语言中的strstr函数的用法「建议收藏」strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。PHP语言函数编辑strstr()函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false。语法

大家好,又见面了,我是你们的朋友全栈君。

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

PHP语言函数

编辑

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。


语法

1
strstr
(string,search)

[1]
 
参数
描述
string
必需。规定被搜索的字符串。
search
必需。规定所搜索的字符串。


提示

注释:
search若是数字,所搜索的将是该数字(作为ASCII码)代表的字符。
注释:该函数是二进制安全的。
注释:该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()。


实例

1
<?php 
echo 
strstr
(
"Helloworld!"
,
"world"
);?>

输出:
1
world!



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/153021.html原文链接:https://javaforall.net

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


相关推荐

  • 计算机软件著作权源代码_软件著作权代码页数

    计算机软件著作权源代码_软件著作权代码页数软件著作权源代码文档的要求:代码总共60页,前面30页/后面30页,每页50行。前面30页要连续,后面30页要连续,30页与31页可不连续。代码结尾要有结束标志,不要空格和注释。一、清除整个文档的空行:方法:用ctrl+a(快捷方式),选中全部源程序代码文档;点击word的查找替换功能查找:^p^p;替换为:^p。选择“全部替换”。反复N次,直到全部替换完成。二、清除注释1.清除单行注释//*^13全部替换为空2.清除多行注释/\*\*^13*/^13全部替换为空…

    2022年9月15日
    0
  • Datagrip2021.8.3激活码【中文破解版】[通俗易懂]

    (Datagrip2021.8.3激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS3…

    2022年3月25日
    87
  • iosclient暑期“动画屋“活动项目总结[通俗易懂]

    iosclient暑期“动画屋“活动项目总结

    2022年1月19日
    39
  • adrc过渡过程 c语言,初步认识ADRC与应用「建议收藏」

    adrc过渡过程 c语言,初步认识ADRC与应用「建议收藏」初步认识ADRC与应用初步认识ADRC与应用这是一个目录ADRC的基本原理一、参考资料推荐二、为什么PID好,以及,为什么PID不够好1.为什么PID好——基于模型的现代控制理论不实用2.为什么PID不够好——PID的缺点三、ADRC给出的方案——如何保留PID的优点,同时弥补PID的缺点1.误差的取法——安排过渡过程2.由误差提取误差微分的方法——跟踪微分器3.加权和的策略不一定最好——非…

    2022年5月19日
    58
  • 51单片机系列有哪些类型_51单片机1602液晶显示原理

    51单片机系列有哪些类型_51单片机1602液晶显示原理Lcd液晶屏幕带有背光显示,可选择蓝光白光黄光三种背光颜色的屏幕,它更具有美光性,在实际生活中有广泛的应用。实物图原理图RS:1为数据/0为指令;RW:1为读/0为写;E1为数据有效,下降沿执行指令示例代码main.c#include”reg52.h” //此文件中定义了单片机的一些特殊功能寄存器#include”lcd.h”typedefunsignedintu16; //对数据类型进行声明定义typedefunsignedcharu8;u8Disp

    2022年9月17日
    0
  • mysql行转列(拆分字符串场景)

    mysql行转列(拆分字符串场景)一对多没有建立中间表的时候经常会采用分隔符的形式将“多”存储在“一”的一个字段里,这样做的代价是无法向一对多的时候那样直接关联查询,一般采用在程序中分割后分别查询的办法

    2022年5月28日
    137

发表回复

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

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