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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 日常IT技巧总结_it工作写经验总结

    日常IT技巧总结_it工作写经验总结一、Windows问题处理技巧Win7插入手机usb弹出窗口关闭1.按“WIN+R”弹出运行,在运行界面输入【services.msc】,点击确定,进入服务;2.在服务列表找到“ShellHardwareDetection”服务,双击打开;3.在弹出的设置对话框,将服务的“启动类型”设置为“自动”,并单击“启动”,按“确定”保存设置。4.再次打开“运行”,输入“gpedit…

    2022年9月10日
    0
  • 驱动程序模型:wddm2.0_编写一个简单的驱动

    驱动程序模型:wddm2.0_编写一个简单的驱动WDF驱动程序开发1.引言设备驱动程序是硬件设备连接到计算机系统的软件接口,任何设备都必须有相应的驱动程序才能在计算机系统上正常工作。设备驱动程序的优劣直接关系到整个系统的性能和稳定性,因此,设计和开发稳定高效的驱动程序具有重要意义。WDF(WindowsDriverFoundation)是微软提出的下一代全新的驱动程序模型,它是在WDM(windowsDriverModel)…

    2022年9月1日
    3
  • 电脑拒绝访问_添加本地端口拒绝访问win10

    电脑拒绝访问_添加本地端口拒绝访问win101:linux服务器默认是不允许root账号进行远程使用winscp,所以我们需要创建一个新的非root用户进行登录2:创建新用户命令如下:#useradduploader#passwduploader//设置密码3:登录验证

    2022年9月17日
    0
  • cmd 杀进程命令_cmd命令结束进程

    cmd 杀进程命令_cmd命令结束进程1、打开CMD,输入tasklist2、根据进程名杀进程taskkill/f/t/imGoogleCrashHandler.exe

    2022年9月5日
    2
  • 华三vlan配置教程_思科模拟器交换机划分vlan命令

    华三vlan配置教程_思科模拟器交换机划分vlan命令1.配置步骤(1)配置DeviceA<DeviceA>system-view[DeviceA]vlan100[DeviceA-vlan100]portgigabitethernet1/0/1[DeviceA-vlan100]quit[DeviceA]vlan200[DeviceA-vlan100]portgigabitethernet1/0/2[Device…

    2022年9月19日
    0
  • 基于H5的移动端APP开发框架

    基于H5的移动端APP开发框架快速增长的APP应用软件市场,以及智能手机的普及,手机应用:Native(原生)APP快速占领了APP市场,成为了APP开发的主流,但其平台的不通用性,开发成本高,多版本开发等问题,一直困扰着专业APP开发企业,和APP服务提供商。安卓和IOS的操作方式,开发模式,界面UI显示方面的差别,也使得原生APP的不同版本体验有很大的区别,光是做兼容性调测,都要花费开发企业不少的时间。近年来,…

    2022年6月16日
    26

发表回复

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

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