1524

8 分钟

#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 剩余字符串:"我洗嘞(理解痛苦吧)。"

#推荐阅读

创建于 2025/7/12

更新于 2025/8/1