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;
}

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153021.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • html5自动生成目录,JavaScript:自动生成博文目录导航

    html5自动生成目录,JavaScript:自动生成博文目录导航感谢孤傲苍狼分享了自动生成博文目录的方法,本文仅作存档使用。图1:效果预览CSS样式#TOCbar{font-size:12px;text-align:left;position:fixed;auto;height:auto;top:50px;right:0px;/*离页面顶部与右侧的距离*/}#TOCbarTab{float:left;30px;border:1px…

    2022年10月26日
  • Mbus主机常用发送命令解析[通俗易懂]

    Mbus主机常用发送命令解析[通俗易懂]在进行Mbus通信时,一些常见的命令会有混淆或者不清楚,下面进行一些总结。Mbus通信的命令格式有几种,分别如下图:其中“SingleCharacter”主要是用于从机回复“确认”信息,一般是一个“E5”作为回复。“ShortFrame”是短命令,也叫一级地址命令,我们经常使用的“10 5B FE 59 16”就是这种命令。“ControlFrame”为控制命令,

    2022年10月15日
  • 免费申请国外免费域名超详细教程[通俗易懂]

    免费申请国外免费域名超详细教程[通俗易懂]1.首先申请免费域名网站:https://my.freenom.com/domains.php2.填入域名,这里我们以xcflag为列(尽量选择复杂一点的或者五个字母以上的域名,因为简单的有些域名是需要收费的),点击检查可用性。3.可以看到很多免费的域名(用的谷歌翻译插件,翻译有时候不是很准确,free翻译过来应该是免费而不是自由,之后会写一些关于谷歌插件的笔记,详细讲解)4.我们选择xcflag.tk点击立即获取,稍等一会点击购物车查看绿色按钮5.默认三个月试用,这里下拉框我们选择十二个月

  • centos7安装python 3.7_python安装后如何使用

    centos7安装python 3.7_python安装后如何使用文章目录什么是EPEL更新一下yum:安装EPEL:安装python3使用python3什么是EPELRHEL以及他的衍生发行版如CentOS、ScientificLinux为了稳定,官方的rpmrepository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpmrepository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题。什么是EPEL?EPEL的全称叫ExtraPackag

  • epoll使用具体解释(精髓)

    epoll使用具体解释(精髓)

    2021年11月16日
  • android酒店点餐系统设计,基于安卓Android酒店点餐系统APP的设计与实现(MySQL)(含录像)…

    android酒店点餐系统设计,基于安卓Android酒店点餐系统APP的设计与实现(MySQL)(含录像)…基于安卓Android酒店点餐系统APP的设计与实现(MySQL)(含录像)(毕业论文9900字,程序代码,Android客户端和JAVA服务端,MySQL数据库)系统需求分析手机端:1.用户注册、登录、修改密码、修改个人信息2.查看菜单、加入菜单列表,选择日期,模拟在线支付或者餐后付款3.查看个人订单,用餐评论后台管理端:1.管理员登录、修改密码2.酒店菜…

发表回复

您的电子邮箱地址不会被公开。

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