实现自己的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.一直以来,纸上编程会犯一个十分不容易找出来的错误:
编译出错:
希望以后不会再犯!!!