首页 > 代码库 > C语言::模拟实现strlen函数
C语言::模拟实现strlen函数
题目要求
编写一个C语言程序模拟实现strlen函数.
算法
strlen函数功能是计算字符串中字符的个数.(除\0外)
而字符串本身就是一个字符数组,只不过末尾以\0结束.
因此,我们只需遍历除\0之外的所有字符即可.
有三种方法可以解决这个问题.
算法总结
方法一:设置一个整型计数器,遍历字符串.
方法二:通过不断函数自身的递归.
方法三:与方法一类似,设置一个char*变量标记字符串尾部,通过指针相减得到字符长度.
核心代码
//方法一:通过设置整型计数器,模拟实现strlen函数. int my_strlen1(const char *str){ assert(str); int count = 0; while(*str++){ count++; } return count; } //方法二:通过递归,模拟实现strlen函数 int my_strlen2(const char *str){ assert(str); if(*str){ return (1+my_strlen2(str+1)); } return 0; } //方法三:通过char*变量,模拟实现strlen函数 int my_strlen3(const char *str){ const char *end = str; assert(str); while(*end++){ ; } return (end-str-1); }
完整测试代码
/* *本代码版权归高小调博客所有 *作者:行不更名,坐不改姓的博主高小调 *日期:2015-7-31 *代码功能:三种方式模拟实现strlen函数 *搜集整理:高小调博客-(http://gaoxiaodiao.com) */ #include #include //方法一:通过设置整型计数器,模拟实现strlen函数. int my_strlen1(const char *str){ assert(str); int count = 0; while(*str++){ count++; } return count; } //方法二:通过递归,模拟实现strlen函数 int my_strlen2(const char *str){ assert(str); if(*str){ return (1+my_strlen2(str+1)); } return 0; } //方法三:通过char*变量,模拟实现strlen函数 //(库函数中的strlen函数就是这么干的) int my_strlen3(const char *str){ const char *end = str; assert(str); while(*end++){ ; } return (end-str-1); } int main(){ char str[]="abcdef"; printf("str长度是:%d\n",my_strlen1(str)); printf("str长度是:%d\n",my_strlen2(str)); printf("str长度是:%d\n",my_strlen3(str)); return 0; }
输出
- 本代码用到的函数列表
- printf()函数功能、原型、用法和实例
- assert()宏功能、原型、用法和实例
- strlen()函数功能、原型、用法及实例
C语言::模拟实现strlen函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。