strlen函数的简单运用与模拟实现 strlen函数的简单使用strlen函数的三种模拟实现使用临时变量的方法使用函数递归的方法使用指针相减的方法
strlen函数的简单使用
1
|
strlen 函数是用来计算字符串长度的一个函数,返回类型是 size_t |
1
2
3
4
5
6
7
8
9
10
|
#include<stdio.h> #include<string.h> int main() { char arr[] = "hello world" ; size_t ; //返回值是size_t unsigned int int len = strlen (arr); printf ( "len=%d\n" , len); return 0; } |
下面就是对于返回值类型是size_t的一个很形象的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
int main() { const char * p1 = "abc" ; const char * p2 = "adbcdef" ; if ( strlen (p1) - strlen (p2) > 0) //因为返回值是无符号数,所以没有负数 { printf ( "hehe" ); } else { printf ( "haha" ); } return 0; } |
strlen函数的三种模拟实现
使用临时变量的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include<stdio.h> #include<assert.h> //模拟实现strlen size_t my_strlen( const char * str) { int count = 0; //计数器 assert (str != NULL); //断言不是空指针,如果没有这步,当是空指针的时候可能会崩溃 while (*str != '\0' ) { count++; str++; } return count; } int main() { char arr[] = "hello" ; int len = my_strlen(arr); printf ( "%d\n" , len); return 0; } |
使用函数递归的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include<stdio.h> #include<assert.h> //不使用临时变量 size_t my_strlen( const char * str) { assert (str != NULL); if (*str != '\0' ) { return 1 + my_strlen(str + 1); } else { return 0; } } int main() { char arr[] = "hello" ; int len = my_strlen(arr); printf ( "%d\n" , len); return 0; } |
使用指针相减的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//指针相减的做法 size_t my_strlen( const char * str) { assert (str != NULL); const char * start = str; //str 不能初始化char类型,所以用const while (*str != '\0' ) { str++; } return str - start; } int main() { char arr[] = "hello" ; int len = my_strlen(arr); printf ( "%d\n" , len); return 0; } |
到此这篇关于strlen函数的使用与模拟实现strlen的文章就介绍到这了,更多相关strlen函数模拟实现strlen内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/sfornyu/article/details/114338335