1.自定义函数(my_strlen)实现strlen函数的功能
size_t my_strlen(const char *s)
{
size_t len = 0;
while(*s++) //循环遍历整个字符串
len++; //如果字符不为'\0'则字符个数自增
return len;
}
2.自定义函数(my_strcpy)实现strcpy函数的功能
char *my_strcpy(char *dest, const char *src)
{
char *cp = dest; //将新指针指向字符串
while(*cp++ = *src++); //完成拷贝工作
return dest;
}
3.自定义函数(my_strcmp)实现strcmp函数的功能
int my_strcmp(const char *s1, const char *s2)
{
int res = 0; //记录对应位置上两个字符的差值
while(*s1++==*s2++ && *s1!='\0' && *s2!='\0');
//求循环后,对应两个字符串的差值
res = *s1 - *s2;
return res;
}
4.自定义函数(my_strcat)实现strcat函数的功能
char *my_strcat(char *dest, const char *src)
{
my_strcpy(dest+my_strlen(dest), src);
return dest;
}
5.自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串
char *my_strstr(const char *haystack, const char *needle)
{
//判断子串是否为空
if(!*needle)
{
return (char *)haystack;
}
//程序执行至此,表示子串不为空
for(const char *h=haystack; *h; h++) //遍历主串
{
char *temp_h = (char *)h; //记录主串当前字符
char *temp_n = (char *)needle; //记录子串当前的字符
//将子串进行遍历
while(*temp_h && *temp_n && *temp_h++==*temp_n++);
//循环结束后
if(!*temp_n)
{
//说明匹配成功,返回主串中第一个出现的位置
return (char *)h;
}
}
//说明将主串遍历结束后也没有匹配到子串
return NULL;
}