学习笔记——strstr函数的C语言实现,不调用库函数

本文介绍了如何在C语言中实现strstr函数,该函数用于查找字符串haystack中第一次出现needle的位置,不考虑结束符'/0'。通过断言确保输入非空,通过双指针遍历比较,找到匹配则返回匹配起始位置,否则返回NULL。附带main函数示例验证实现。
摘要由CSDN通过智能技术生成

原型:char *strstr(char *haystack, char *needle);
用法:#include <string.h>
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符'/0')。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
C代码实现如下:

#include <stdio.h>
#include <assert.h>

char *myStrstr(const char *str1, const char *str2)
{
    char *s1, *s2;
   
    assert((str1 != (char *)0) && (str2 != (char *)0)); //对两指针加非0 断言
   
    if (str1 == str2)  //如果两指针指向同一地址,直接返回str1
    {
        return (char *)str1;
    }
   
    while (*str1) //str1用于记录找到子窜的位置
    {
        s1 = (char *)str1;
        s2 = (char *)str2;
       
        //当str2中有字符与str1中的相同并且str1和str2都未至末尾时,循环
        while ((*s1 == *s2) && *s1 && *s2)
        {
            s1++;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值