字符串函数__strlen()

简介: strlen()计算的是字符串的长度的,引用的头文件是#include<string.h>

strlen()计算的是字符串的长度的,引用的头文件是#include<string.h>


size_t strlen ( const char * str );

1.size_t说明strlen()返回的类型是无符号整形,当直接作为表达式运算时,我们得注意

例如:

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. char arr[]="abcd";
6. char brr[]="abcdef";
7. if(strlen(arr)-strlen(brr)>0)
8.     {
9. printf(">\n");
10.     }
11. else
12.     {
13. printf("<=\n");
14.     }
15. return 0;
16. }

如果不提前告诉大家,大家一定认为输出的是“<=”,arr数组的长度是4,brr数组长度是6,4-6=-2,所以输出的不就是“<=”吗?然而事实是这样的,由于strlen()返回的是无符号整形,所以strlen(arr)-strlen(brr)是不会等于-2,而是将-2的补码符号位解析成无符号,所以会得到一个很大的正数,最输出的“>”.

2.strlen()工作原理,就是给strlen()一个地址,它就返回字符串中字符的个数,前提是字符串中包含'\0',否者求不出字符串长度,会随机返回一个值。

例如:

1. #include<stdio.h>
2. #include<string.h>
3. int main()
4. {
5. char arr[]="abc";
6. char brr[]={'a','b','c'};
7. int ret=strlen(brr);
8. int len=strlen(arr);
9. printf("brr的长度%d\n",ret);
10. printf("arr的长度%d\n",len);
11. return 0;
12. }

A18BA67C-9D0C-40FF-8450-0143B6E245E7.jpeg

运行结果看出,arr的长度的确是3,brr的长度却不是6,这是因为arr的字符串末尾带有\0,brr却没有带有\0,strlen函数会一直执行直到找到\0停止,这里可以看出来,brr执行strlen函数时,在第七个位置找到\0,然后停止执行。

3.自己实现一个strlen()

1. #include<stdio.h>
2. #include<string.h>
3. #include<assert.h>
4. int my_strlen(char* str)//计数器版本
5. {
6. assert(str);//断言,保证str有效
7. int count=0;//计数器
8. while(*str!='\0')
9.     {
10. if(*str!='\0')
11.         {
12.             count++;
13.             str++;
14.         }
15.     }
16. return count;
17. }
18. int main()
19. {
20. char crr[]="abc";
21. int len_crr=my_strlen(crr);//模拟实现strlen()
22. printf("crr的长度%d\n",len_crr);
23. return 0;
24. }

运行结果

7AA2882E-0A67-4AB1-9D61-2480B68A6F5F.jpeg

相关文章
|
6月前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
|
21天前
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
19 0
|
6月前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
6月前
|
C语言
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
深入理解字符串函数和字符函数(islower和isupper、tolower和toupper、strlen、strcpy、strcat、strcmp)(一)
|
6月前
|
C语言
深入理解字符串函数(strstr、strtok、strerror)(二)
深入理解字符串函数(strstr、strtok、strerror)(二)
|
编译器 Linux C语言
【C语言】字符串函数的介绍二( strcmp、strncpy、strncat、strncmp)
【C语言】字符串函数的介绍二( strcmp、strncpy、strncat、strncmp)
117 0
|
存储 C语言 C++
【C语言】字符串函数的介绍一(strlen、strcpy、stract)
【C语言】字符串函数的介绍一(strlen、strcpy、stract)
79 0
字符串函数strncmp
字符串函数strncmp
122 1
|
程序员 编译器
【strlen】三种方法模拟实现strlen字符串函数
【strlen】三种方法模拟实现strlen字符串函数
89 0
【strlen】三种方法模拟实现strlen字符串函数
字符串函数__strcpy()
strcpy()是在一个空间里拷贝一个字符串,遇到\0停止,同时也会拷贝\0