C语言中strstr()函数的使用分析

Python018

C语言中strstr()函数的使用分析,第1张

原型: char *strstr(const char *str1, const char *str2)

#include<string.h>

找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。

Returns a pointer to the first occurrence of strSearch in str, or NULL if strSearch does not appear in str. IfstrSearch points to a string of zero length, the function returns str.

代码如下:

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#pragma warning (disable:4996)

char *mystrstr(char *s1,char *s2)

int main(void)

{

char *s="Golden Global View"

char *l="ob"  //char *l=""

char *p

system("cls")

p=mystrstr(s,l)

if (p!=NULL)

{

printf("%sn",p)

}

else

{

printf("Not Found!n")

}

getch()

return 0

}

/*FROM 百科*/

char *mystrstr(char *s1,char *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

}

}

另一个实现:

代码如下:

char *  strstr (buf, sub)

register char *buf

register char *sub

{

register char *bp

register char *sp

if (!*sub)

return buf

while (*buf)

{

bp = buf

sp = sub

do {

if (!*sp)

return buf

} while (*bp++ == *sp++)

buf += 1

}

return 0

}

又一个实现:

代码如下:

#include <iostream>

#include <string>

using namespace std

//c语言实现strstr

const char* isSub(const char* str, const char *subs){

//特殊情况

if(!*subs)

return str

const char* tmp=str

while (*tmp!='')

{

//用于每次将父串向后移动一个字符

const char* tmp1=tmp

//记录子串地址

const char* sub1=subs

while (*sub1!=''&&*tmp1!='')

{

//若不相等则跳出,将父串后移一个字符

if (*sub1!=*tmp1)

break

//若相等且子串下一个字符是末尾则是这个父串的子串

if (*sub1==*tmp1&&*(sub1+1)=='')

return tmp

//若相等则继续比较下一个字符

if (*sub1==*tmp1)

{

sub1++

tmp1++

}

}

tmp++

}

return NULL

}

int main(){

char* str1="ababcdddb"

char* str=""

const char *res=isSub(str1,str)

if (res!=NULL)

{

cout <<res <<endl

}

else

cout <<"null" <<endl

//cout <<isSub(str1,str) <<endl

return 0

}

C语言中,strstr函数的功能是寻找字符串中子串出现的位置,自己写的步骤如下。

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:。

int fun(char *a, char *b)

{

int i, j, alen = strlen(a), blen = strlen(b)

for (i = 0i <alen - blen + 1i++)

if (a[i] == b[0]) {

for (j = 1j <blenj++) if (a[i + j] != b[j])break

if (j == blen)

return i

}

return -1

}

3、编译器运行test.cpp文件,此时成功实现了strstr实现了字符串查找。