宜昌C/C++语言培训班
宜昌C/C++语言培训班
- 上课时段:见详情
- 教学点:1个
- 开班时间:随到随学
- 课程价格:请咨询
- 已关注:841
- 优惠价格:请咨询
- 咨询电话: 400-008-6280
宜昌C/C++语言培训相关资料:
常用的9个字符串C标准库函数之strstr实现
之前介绍了经常用到的9个字符串C标准库函数,这次我们来介绍一下strstr字符串函数的实现。
函数原型:
char * strstr ( const char * str1, const char * str2 );
参数:
str1:需要从其中查找子串的字符串
str2:所要查找的子串
返回:
如果从str1中查找到了str2,则返回str1中第一次出现str2的位置,否则返回NULL.
下面我们来测试一下strstr函数的功能:
//测试程序
#include
#include//strstr
int main()
{
char str[] = "itcastithemia";
char substr[] = "th";//所要查找的子串
char *p = strstr(str, substr);
if (p != NULL)
printf("%sn", p);
else
printf("not found %sn", substr);
p = strstr(str, "tha");
if (p != NULL)
printf("%sn", p);
else
printf("not found %sn", substr);
return 0;
}
根据我们上面对strstr功能的介绍,第一次查找子串”th”,会查找成功,所以strstr函数会返回th首次出现的地址,而第二次要查找的子串“tha”并没i用,所以strstr函数会返回NULL.
测试结果如图:
符合我们的预期。
下面自己实现一个strstr函数,思路如下:
1) 从str1的每一个位置开始,依次和str2中的每一个字符进行比较,如果在到str2字符串结尾之前,出现了不等的情况,则结果本轮比较,继续进行下一轮比较,否则查找子串str2成成,返回str1中本轮开始对比的位置。
程序如下:
char *mystrstr(const char *str1, const char *str2)
{
const char *pstr = str1;
const char *psub = str2;
const char *pcur = NULL;
if (str1 == NULL || str2 == NULL) //判断参数是否合法
{
return NULL;
}
while (*pstr != '