原型: 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实现了字符串查找。