周冰心 发表于 2025-6-4 19:01:08

模拟实现 strstr(字符串查找) --浅谈C语言

C 字符串查找 - strstr()

描述

C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 '\0'。
声明

下面是 strstr() 函数的声明。
char *strstr(const char *haystack, const char *needle)参数


[*]haystack -- 要被检索的 C 字符串。
[*]needle -- 在 haystack 字符串内要搜索的小字符串。
haystack 干草堆
needle 针
来源推导: 干草堆里捞针/大海捞针.
参考VS命名
haystack == string
needle == substring
返回值

该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。
模拟实现

#include


char *  strstr (const char * str1, const char * str2)
{
       char *cp = (char *) str1; //强转成非const ; cp不修改原指针的指针变量副本
       char *s1, *s2;

                                //要找的字串为空,返回
       if ( !*str2 )
           return((char *)str1);

                                //暴力查找
       while (*cp)
     {
                                     //小循环用的临时副本
               s1 = cp;
               s2 = (char *) str2;
                                                                //循环比较
               while ( *s1 && *s2 && !(*s1-*s2) ) //strcmp
                       s1++, s2++;

                                                                //循环结束后,找到了(s2走到'\0'),返回字串起始地址cp
               if (!*s2)
                       return(cp);
                                                               
                                                                //找下一个
               cp++;
     }
                                //走到末尾,找不到,返回空
       return(NULL);

int main()
{
    char* p1 = "abcddefdef";
    char* p2 = "def";
    char* ret = my_strstr(p1, p2);
    if (ret == NULL)
      printf("子串不存在\n");
    else
      printf("%s\n", ret);
    return 0;
}
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

翳舀 发表于 2025-11-7 13:42:58

感谢,下载保存了

习和璧 发表于 2025-12-16 22:45:51

谢谢分享,辛苦了

套缈 发表于 2025-12-20 07:08:01

感谢发布原创作品,程序园因你更精彩

章绮云 发表于 2025-12-20 20:21:21

谢谢分享,辛苦了

峰襞副 发表于 2025-12-25 11:10:49

新版吗?好像是停更了吧。

林鱼 发表于 2025-12-29 05:31:31

分享、互助 让互联网精神温暖你我

荏牌 发表于 2026-1-12 13:43:47

东西不错很实用谢谢分享

扎先 发表于 2026-1-16 08:02:43

新版吗?好像是停更了吧。

客臂渐 发表于 2026-1-18 03:33:08

喜欢鼓捣这些软件,现在用得少,谢谢分享!

倡遍竽 发表于 2026-1-18 13:36:06

用心讨论,共获提升!

杠氯 发表于 2026-1-18 17:43:28

谢谢分享,辛苦了

搜娲瘠 发表于 2026-1-18 18:03:56

感谢分享

筒霓暄 发表于 2026-1-19 01:40:21

用心讨论,共获提升!

滤冽 发表于 2026-1-20 01:31:31

不错,里面软件多更新就更好了

百里宵月 发表于 2026-1-21 04:51:56

前排留名,哈哈哈

喳谍 发表于 2026-1-22 17:36:34

懂技术并乐意极积无私分享的人越来越少。珍惜

愤血冒 发表于 2026-1-23 03:25:48

谢谢分享,辛苦了

劳暄美 发表于 2026-1-23 23:53:11

感谢分享,下载保存了,貌似很强大

箝德孜 发表于 2026-1-24 04:09:56

鼓励转贴优秀软件安全工具和文档!
页: [1] 2
查看完整版本: 模拟实现 strstr(字符串查找) --浅谈C语言