#C 语言标准库函数 strstr
/*********************************************
* @brief 在字符串中查找子字符串
* @param str 被检索的字符串
* @param substr 要查找的子串
* @return 指向找到的字串的指针
********************************************/
char* strstr(const char* str, const char* substr);
说明
在字符串 str
中查找子字符串 substr
,返回找到的第一个子字符串 substr
的地址。
参数
str
- 被检索的字符串substr
- 要查找的子字符串
返回值
- 指向找到的子字符串的指针
- 如果没有找到目标子字符串,则返回
NULL
#示例
#include <stdio.h>
#include <string.h>
int main(void)
{
const char* text = "一袋米要抗几楼(感受痛苦吧),一袋米要抗二楼(思考痛苦吧),一袋米要给多了(接受痛苦吧),一袋米我洗嘞(理解痛苦吧)。";
const char* substr = "一袋米";
const char* str = text;
while ((str = strstr(str, substr)) != NULL) // 循环查找 "一袋米"
{
printf("地址:%p 偏移:%td 剩余字符串:\"%s\"\n", str, str - text, str + strlen(substr));
str += strlen(substr);
}
return 0;
}
说明:
通过 strstr
循环查找子字符串 "一袋米"
直到返回 NULL
。
运行结果:
地址:0x5cdf19f8e008 偏移:0 剩余字符串:"要抗几楼(感受痛苦吧),一袋米要抗二楼(思考痛苦吧),一袋米要给多了(接受痛苦吧),一袋米我洗嘞(理解痛苦吧)。" 地址:0x5cdf19f8e035 偏移:45 剩余字符串:"要抗二楼(思考痛苦吧),一袋米要给多了(接受痛苦吧),一袋米我洗嘞(理解痛苦吧)。" 地址:0x5cdf19f8e062 偏移:90 剩余字符串:"要给多了(接受痛苦吧),一袋米我洗嘞(理解痛苦吧)。" 地址:0x5cdf19f8e08f 偏移:135 剩余字符串:"我洗嘞(理解痛苦吧)。"