原型: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 <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;
}