中山做网站专业的公司,河南软件开发公司有哪些,wordpress模版文件夹,开发网站性能监控目录 一#xff0c;strstr函数简介
二#xff0c;strstr函数实现原理
三#xff0c;strstr函数的用法
四#xff0c;strstr函数的注意事项
五#xff0c;strstr函数的模拟实现 一#xff0c;strstr函数简介 strstr函数是在一个字符串中查找另一个字符串的第一次出现strstr函数简介
二strstr函数实现原理
三strstr函数的用法
四strstr函数的注意事项
五strstr函数的模拟实现 一strstr函数简介 strstr函数是在一个字符串中查找另一个字符串的第一次出现并返回该位置的指针如果找不到则返回NULL。 函数头文件
#include string.h 函数原型 const char * strstr ( const char * str1, const char * str2 ); str1被查找的目标字符串 str2要查找的对象字符串 二strstr函数实现原理 strstr函数的实现可以通过遍历字符串的方式来查找str2字符串的出现位置。 1遍历str1字符串逐个字符与str2字符串进行比较。
2如果str1字符串的当前字符与str2字符串的第一个字符相等则继续比较后续字符。
3如果str1字符串中的连续字符与str2字符串完全匹配则返回该位置的指针。
4如果str1字符串遍历完毕仍未找到匹配则返回NULL。
三strstr函数的用法
#include stdio.h
#include string.hint main()
{char str1[] hello world!;char str2[] world!;char* ret strstr(str1, str2);if (ret NULL)printf(找不到\n);elseprintf(%s\n, ret);return 0;
}
运行结果 释义 上述代码中我们在字符串hello world!中查找字符串world!的第一次出现并打印位置。如果找到了则打印出从第一次找到的那个位置开始后面的所有字符如果未找到则打印“找不到”。 四strstr函数的注意事项 在使用strstr函数时需要注意以下几点 1函数返回的指针指向的是str1字符串中匹配到的位置因此可以通过指针的偏移量来得到具体的位置。
#include stdio.h
#include string.hint main()
{char str1[] hello world!;char str2[] world!;char* ret strstr(str1, str2);if (ret NULL)printf(找不到\n);elseprintf(%d\n, ret - str1);return 0;
} 运行结果 释义 上述代码中我们在字符串str1中查找字符串str2的第一次出现并打印位置。如果找到了则打印出位置的偏移量如果未找到则打印“找不到”。 2如果需要查找字符串的最后一次出现可以配合使用strstr函数。
3函数的参数str1和str2都应该是以\0结尾的字符串否则可能会导致不可预料的结果。
五strstr函数的模拟实现
#include stdio.h
#include string.h
#include assert.hconst char* my_strstr(const char* str1, const char* str2)
{const char* cp;//记录开始匹配的位置const char* s1;//遍历str1指向的字符串const char* s2;//遍历str2指向的字符串assert(str1 str2);//处理空指针的情况if (*str2 \0)//如果str2为空字符串则返回str1return str1;cp str1;while (*cp){s1 cp;s2 str2;while (*s1 *s2 *s1 *s2)//在str1中找到str2的第一个字符{s1;s2;}if (*s2 \0)//如果找到了str2的所有字符则返回该位置的指针return cp;cp;//否则继续在str1中寻找下一个可能的位置}return NULL;//如果未找到匹配的位置则返回NULL
}int main()
{char str1[] hello world!;char str2[] world!;const char* ret my_strstr(str1, str2);if (ret NULL)printf(找不到\n);elseprintf(%s\n, ret);return 0;
}