形式:char * strstr ( const char * str1, const char * str2 );
- strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
- 例如:str1[20]="abcdefg",str2[10]="bcd"。通过使用strstr函数可以得到”bcdefg“,输出的是你需要查找的字符串的位置。
思路
start——>str1, substart——>str2, cp用来存储str1的首地址
从str1首地址开始判断,遇见和str2字符相同时执行内循环,同时加一,直到其中一个变为‘\0’,退出内循环,当substr为‘\0’时,输出结果;若遇见str2前面部分与str1的一部分相同,后一部分不同,则str1加一,往后推一个,str2则又回到首地址开始下一次判断。
代码
char *my_strstr(const char* str1, const char* str2)
{
assert(str1);
assert(str2);
char* start = (char*)str1;
char* substr = (char*)str2;
char* cp = (char*)str1;
if (*str2 == '\0')
return NULL;
while (*cp)
{
start=cp;
while (*start && *substr && *start == *substr)
{
start++;
substr++;
}
if (*substr == '\0')
return cp;
substr = (char*)str2;
cp++;//得到起始位置的下一个位置
}
}
strstr函数解析与实现
本文详细解析了strstr函数的工作原理,介绍了如何判断一个字符串是否为另一个字符串的子串,并提供了具体的实现代码。通过实例演示了如何使用strstr函数定位子串在主串中的位置。
1223

被折叠的 条评论
为什么被折叠?



