以下是对C语言中strstr()函数的使用进行了详细的分析介绍,需要的朋友可以参考下
原型:char *strstr(const char *str1, const char *str2);jQRHTML5中文学习网 - HTML5先行者学习网
#include<string.h>jQRHTML5中文学习网 - HTML5先行者学习网
找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。jQRHTML5中文学习网 - HTML5先行者学习网
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.jQRHTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
jQRHTML5中文学习网 - HTML5先行者学习网
#include <stdio.h>jQRHTML5中文学习网 - HTML5先行者学习网
#include <conio.h>jQRHTML5中文学习网 - HTML5先行者学习网
#include <string.h>jQRHTML5中文学习网 - HTML5先行者学习网
#include <stdlib.h>jQRHTML5中文学习网 - HTML5先行者学习网
#pragma warning (disable:4996)jQRHTML5中文学习网 - HTML5先行者学习网
char *mystrstr(char *s1,char *s2);jQRHTML5中文学习网 - HTML5先行者学习网
int main(void)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
char *s="Golden Global View";jQRHTML5中文学习网 - HTML5先行者学习网
char *l="ob"; //char *l=""jQRHTML5中文学习网 - HTML5先行者学习网
char *p;jQRHTML5中文学习网 - HTML5先行者学习网
system("cls");jQRHTML5中文学习网 - HTML5先行者学习网
p=mystrstr(s,l);jQRHTML5中文学习网 - HTML5先行者学习网
if (p!=NULL)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
printf("%s/n",p);jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
elsejQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
printf("Not Found!/n");jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
getch();jQRHTML5中文学习网 - HTML5先行者学习网
return 0;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
/*FROM 百科*/jQRHTML5中文学习网 - HTML5先行者学习网
char *mystrstr(char *s1,char *s2)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
int n;jQRHTML5中文学习网 - HTML5先行者学习网
if (*s2) //两种情况考虑jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
while(*s1) jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
for (n=0;*(s1+n)==*(s2+n);n++)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
if (!*(s2+n+1)) //查找的下一个字符是否为'/0'jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
return (char*)s1;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
s1++;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
return NULL;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
elsejQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
return (char*)s1;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
}
jQRHTML5中文学习网 - HTML5先行者学习网
另一个实现:jQRHTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
jQRHTML5中文学习网 - HTML5先行者学习网
char * strstr (buf, sub)jQRHTML5中文学习网 - HTML5先行者学习网
register char *buf;jQRHTML5中文学习网 - HTML5先行者学习网
register char *sub;jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
register char *bp;jQRHTML5中文学习网 - HTML5先行者学习网
register char *sp;jQRHTML5中文学习网 - HTML5先行者学习网
if (!*sub)jQRHTML5中文学习网 - HTML5先行者学习网
return buf;jQRHTML5中文学习网 - HTML5先行者学习网
while (*buf)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
bp = buf;jQRHTML5中文学习网 - HTML5先行者学习网
sp = sub;jQRHTML5中文学习网 - HTML5先行者学习网
do {jQRHTML5中文学习网 - HTML5先行者学习网
if (!*sp)jQRHTML5中文学习网 - HTML5先行者学习网
return buf;jQRHTML5中文学习网 - HTML5先行者学习网
} while (*bp++ == *sp++);jQRHTML5中文学习网 - HTML5先行者学习网
buf += 1;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
return 0;jQRHTML5中文学习网 - HTML5先行者学习网
}
jQRHTML5中文学习网 - HTML5先行者学习网
又一个实现:jQRHTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
jQRHTML5中文学习网 - HTML5先行者学习网
#include <iostream>jQRHTML5中文学习网 - HTML5先行者学习网
#include <string>jQRHTML5中文学习网 - HTML5先行者学习网
using namespace std;jQRHTML5中文学习网 - HTML5先行者学习网
//c语言实现strstrjQRHTML5中文学习网 - HTML5先行者学习网
const char* isSub(const char* str, const char *subs){jQRHTML5中文学习网 - HTML5先行者学习网
//特殊情况jQRHTML5中文学习网 - HTML5先行者学习网
if(!*subs)jQRHTML5中文学习网 - HTML5先行者学习网
return str;jQRHTML5中文学习网 - HTML5先行者学习网
const char* tmp=str;jQRHTML5中文学习网 - HTML5先行者学习网
while (*tmp!='/0')jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
//用于每次将父串向后移动一个字符jQRHTML5中文学习网 - HTML5先行者学习网
const char* tmp1=tmp;jQRHTML5中文学习网 - HTML5先行者学习网
//记录子串地址jQRHTML5中文学习网 - HTML5先行者学习网
const char* sub1=subs;jQRHTML5中文学习网 - HTML5先行者学习网
while (*sub1!='/0'&&*tmp1!='/0')jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
//若不相等则跳出,将父串后移一个字符jQRHTML5中文学习网 - HTML5先行者学习网
if (*sub1!=*tmp1)jQRHTML5中文学习网 - HTML5先行者学习网
break;jQRHTML5中文学习网 - HTML5先行者学习网
//若相等且子串下一个字符是末尾则是这个父串的子串jQRHTML5中文学习网 - HTML5先行者学习网
if (*sub1==*tmp1&&*(sub1+1)=='/0')jQRHTML5中文学习网 - HTML5先行者学习网
return tmp;jQRHTML5中文学习网 - HTML5先行者学习网
//若相等则继续比较下一个字符jQRHTML5中文学习网 - HTML5先行者学习网
if (*sub1==*tmp1)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
sub1++;jQRHTML5中文学习网 - HTML5先行者学习网
tmp1++;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
tmp++;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
return NULL;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
int main(){jQRHTML5中文学习网 - HTML5先行者学习网
char* str1="ababcdddb";jQRHTML5中文学习网 - HTML5先行者学习网
char* str="";jQRHTML5中文学习网 - HTML5先行者学习网
const char *res=isSub(str1,str);jQRHTML5中文学习网 - HTML5先行者学习网
if (res!=NULL)jQRHTML5中文学习网 - HTML5先行者学习网
{jQRHTML5中文学习网 - HTML5先行者学习网
cout << res << endl;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
elsejQRHTML5中文学习网 - HTML5先行者学习网
cout << "null" << endl;jQRHTML5中文学习网 - HTML5先行者学习网
//cout << isSub(str1,str) << endl;jQRHTML5中文学习网 - HTML5先行者学习网
return 0;jQRHTML5中文学习网 - HTML5先行者学习网
}jQRHTML5中文学习网 - HTML5先行者学习网
jQRHTML5中文学习网 - HTML5先行者学习网
jQRHTML5中文学习网 - HTML5先行者学习网