前言
读取字符串的长度,使用函数 strlen。这里我们写一个函数,来读取字符串的长度,本文内容主要包括:
- 使用strlen
- 使用指针:是常规的方法,但是要创建变量
- 指针改进:不需要创建变量,要求高,不易掌握
- 使用递归:不需要创建变量,要求高,不易掌握
- 介绍常量指针—— const char* str
1、函数strlen
1
2
3
4
5
6
7
|
int main() { char arr[] = "abcd" ; int len = strlen (arr); printf ( "%d\n" , len); return 0; } |
2、使用指针
字符串以字符 ‘\0’ 结尾,需要创建变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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、指针改进
使用指针,不创建变量,不需要创建变量,面试题级别,要求高,不易掌握
1
2
3
4
5
6
7
8
9
|
int my_strlen( char * str) { char * p = str; //记录首元素地址的位置 while (*p != '\0' ) { p++; } return p - str; //尾地址-首地址,就是字符串的长度 } |
4、使用递归
递归函数,不需要创建变量,以大化小,进行分解,面试题级别,要求高,不易掌握
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
1
2
3
4
5
6
7
|
int my_strlen( char * str) { //不需要创建变量 if (*str != '\0' ) return 1 + my_strlen(str+1); //递归 else return 0; } |
5、my_strlen函数的参数改进—常量指针
定义常量指针,const 对 *str 的内容进行限制,字符串的内容在传参时不会发生改变,将上面的自定义函数,都换成下面的代码:
1
2
3
|
int my_strlen( const char * str) //常量指针 { } |
总结
写一个函数,来读取字符串的长度,推荐掌握指针的写法。如果后面还有别的函数的写法,再进行更新。
到此这篇关于C语言strlen函数实现读取字符串长度详解的文章就介绍到这了,更多相关C语言 字符串长度内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/taibudong1991/article/details/124006994?spm=1001.2014.3001.5502