900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【C语言练习——读取字符串长度的库函数 strlen及其模拟实现】

【C语言练习——读取字符串长度的库函数 strlen及其模拟实现】

时间:2022-09-03 09:07:17

相关推荐

【C语言练习——读取字符串长度的库函数 strlen及其模拟实现】

读取字符串长度的库函数 strlen及其模拟实现

前言1、使用库函数 strlen2、使用指针方式模拟实现 strlen3、指针改进方式模拟实现 strlen4、使用递归方式模拟实现 strlen5、my_strlen函数的参数改进—常量指针总结

前言

读取字符串的长度,使用函数 strlen。这里我们写一个函数,来读取字符串的长度。

在前文中分别学习了用一般方法、递归、指针的方式模拟实现过库函数 strlen:

【C语言基础4——函数(2)】7.4 练习2【C语言基础11——指针(2)】4.2 指针-指针

本文对学习过的读取字符串的长度进行汇总,并提出改进的写法,内容主要包括:

使用strlen使用指针:是常规的方法,但是要创建变量指针改进:不需要创建变量,要求高,不易掌握使用递归:不需要创建变量,要求高,不易掌握介绍常量指针—— const char* str

1、使用库函数 strlen

int main(){char arr[] = "abcd";int len = strlen(arr);printf("%d\n", len);return 0;}

2、使用指针方式模拟实现 strlen

字符串以字符 ‘\0’ 结尾,需要创建变量

int my_strlen(char* str){int count = 0;//统计字符的个数,需要创建变量while (*str != '\0'){count++;str++;}return count;}int main(){char arr[] = "abcd";//char* str = arr;int len = my_strlen(arr);printf("%d\n", len);return 0;}

3、指针改进方式模拟实现 strlen

使用指针,不创建变量,不需要创建变量,面试题级别,要求高,不易掌握

int my_strlen(char* str){char* p = str;//记录首元素地址的位置while (*p != '\0'){p++;}return p - str;//尾地址-首地址,就是字符串的长度}

4、使用递归方式模拟实现 strlen

递归函数,不需要创建变量,以大化小,进行分解,面试题级别,要求高,不易掌握

my_strlen("abcdef")1+my_strlen("bcdef")1+1+my_strlen("cdef")1+1+1+ my_strlen("def")1+1+1+1+ my_strlen("ef")1 + 1 + 1 + 1 +1+my_strlen("f")1 + 1 + 1 + 1 + 1 + 1+ my_strlen("")1 + 1 + 1 + 1 + 1 + 1 + 0 = 6

int my_strlen(char* str){//不需要创建变量if (*str != '\0')return 1 + my_strlen(str+1);//递归elsereturn 0;}

5、my_strlen函数的参数改进—常量指针

定义常量指针,const 对 *str 的内容进行限制,字符串的内容在传参时不会发生改变,将上面的自定义函数,都换成下面的代码:

int my_strlen(const char* str)//常量指针,限制字符串,在传递过程中不可以被修改{assert(str != NULL);//当str为空指针时,程序报错char* p = str;//记录首元素地址的位置while (*p != '\0'){p++;}return p - str;//尾地址-首地址,就是字符串的长度}

总结

写一个函数,来读取字符串的长度,推荐掌握最后一种指针的写法。实现其他字符串相关的库函数也可以参照这种实现方式。

如果后面还有别的函数的写法,再进行更新。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。