strstr函数 自己实现

实现自己的strstr函数:返回主串中子字符串的位置后的所有字符。

如:主串“12345678”,字串“45”,函数返回“45678”


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

const char* strstr(const char *src, const char *dst)  
{  
      //入口参数检查
      assert(NULL != src && NULL != dst);
      #if 0
      if(src == NULL || dst == NULL)
      {
          printf("usage: input error parameter\n");
	  exit(1);
      }
      #endif       
      while(NULL != src)  
      {  
          const char *temp1 = src;     
          const char *temp2 = dst;        
          const char *res = NULL;
          if(*temp1 == *temp2)  
          {  
                res = temp1;  
                while(*temp1 && *temp2 && *temp1++ == *temp2++)  
                ;  
                  
                if(*temp2 == '\0')
		{
                      return res;   
		}      
          }  
          src++;  
      }  
      return NULL;  
}  
  
  
int main()  
{  
    const char *str1 = "helloworld";  
    const char *str2 = "world";  
    const char *res = strstr(str1, str2);  
      
    if(res != NULL)
    {
        printf("%s\n",res);  
    }
    else
    {
        printf("no child str\n");
    }

    return 0;
}  


感想:

1. 任何函数调用第一步,进行入口参数检查

可用assert函数简单实现 ,也可以用if语句实现

养成良好的编码习惯


2. 关键字const的用法

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;

(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;

(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;

(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;

(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

本程序中,const修饰形参,不在函数内部改变输入参数的值

3.一直以来,纸上编程会犯一个十分不容易找出来的错误:


编译出错:



希望以后不会再犯!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值