我是靠谱客的博主 愉快豆芽,最近开发中收集的这篇文章主要介绍C语言--常用库函数之str系列的模拟实现(strlen、strcpy、strcmp、strcat、 strstr),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.strlen(计算字符串的长度)
(1)非递归
int my_strlen(const char *str)
{
char *p = str;
int count = 0;
while (*p != '')
{
count++;
p++;
}
return count;
}

(2)递归
int my_strlen(char *str)
{
if (*str == '')
return 0;
else
return 1 + my_strlen(str + 1);
}

2.strcpy(把从src地址开始且含有''结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*)
char* my_strcpy(char* dest, const char *src)
{
assert(dest);
assert(src);
char *ret = dest;
while (*src != '')
{
*dest = *src;
++dest;
++src;
}
*dest = '';
return ret;
}

3.strcat(字符串连接函数)
char* my_strcat(char *dest, const char* src)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest != '')
{
++dest;
}
while (*src != '')
{
*dest = *src;
++dest;
++src;
}
*dest = '';
return ret;
}

4.strstr (strstr(str1, str2)判断str2是否是str1的子串,如果是返回str2在str1中的位置,不是返回空)
char* my_strstr(const char* str1, const char* str2)
{
assert(str1);
assert(str2);
char* cp = str1;
char* s1 = NULL;
char* substr = str2;
if (*str2 == '')
{
return NULL;
}
while (*cp != '')
{
s1 = cp;
substr = str2;
while (*s1 && *substr && (*s1 == *substr))
{
s1++;
substr++;
}
if (*substr == '')
{
return cp;
}
cp++;
}
}

5.strcmp(两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇''为止)
int my_strcmp(const char* src, const char* dest)
{
int ret = 0;
assert(src);
assert(dest);
while ((ret = *(unsigned char*)src - *(unsigned char*)dest) == 0 && *dest != '')
{
src++;
dest++;
}
if (ret > 0)
ret = 1;
else if (ret < 0)
ret = -1;
return ret;
}


最后

以上就是愉快豆芽为你收集整理的C语言--常用库函数之str系列的模拟实现(strlen、strcpy、strcmp、strcat、 strstr)的全部内容,希望文章能够帮你解决C语言--常用库函数之str系列的模拟实现(strlen、strcpy、strcmp、strcat、 strstr)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部