首页 > 编程知识 正文

strlen函数什么意思,strlen函数举例

时间:2023-05-04 15:05:42 阅读:258344 作者:2671

Strlen函数详解 函数介绍 strlen函数的函数原型 size_t strlen( const char *string ); 由此可以看出strlen函数的返回值类型是size_t类型的 库函数下的strlen #include<stdio.h>int main(){char arr[20] = "abcdef";int len = strlen(arr);printf("%d", len);return 0;} 打印的结果为6,strlen是不会计算的长度的,strlen函数遇到就会停止下来 下面来看一个代码 #include<stdio.h>#include<string.h>int main(){char arr1[] = "abcdef";char arr2[] = "abc";if (strlen(arr2) - strlen(arr1) > 0)printf("arr2>arr1");elseprintf("arr2<arr1");return 0;} 上面的代码打印的结果是arrr2>arr1,但是在我们看来,strlen(arr1)的大小为6,strlen(arr2)的大小为3,那么为什么会出现strlen(arr2)-strlen(arr1)>0的结果呢?原因在于,我们在上面已经提到了说strlen函数的返回值类型是size_t类型,也就是无符号的整数类型,无符号类型是大于等于0的,两个strlen的返回值类型都是size_t类型的,那么两个size_t类型的数字进行相减的结果同样也是size_t类型的,那么返回值的类型也就是size_t类型的了所以在使用strlen函数的时候,一定要注意strlen函数的返回值类型是size_t类型的,不然的话,可能会容易出错 模拟实现strlen函数的三种方法 我们在进行模拟实现的时候,可以把strlen函数的返回值类型给成int类型,也可以把他的返回值类型给成size_t类型的,都说的通,使用int类型的话,在有些情况下,可能会更加准确,就比如说是上面的那种情况,使用size_t类型确保了返回值都是正数,所以说,都说的通 1.计数器的方法 #include<stdio.h>#include<assert.h>int my_strlen(const char *str){assert(str);int count = 0;while (*str != ''){count++;str++;}return count;}int main(){char arr[] = "abcdef";int len = my_strlen(arr);printf("%d",len);return 0;} 2.递归的方法 #include<stdio.h>#include<assert.h>int my_strlen(const char* str){assert(str);if (*str == '')return 0;elsereturn 1 + my_strlen(str + 1);}int main(){char arr[] = "abcdef";int len = my_strlen(arr);printf("%d", len);return 0;} 3.指针相减的方法 #include<stdio.h>#include<assert.h>int my_strlen(char* str){assert(str);char* ret = str;while (*str != ''){str++;}return str - ret;}int main(){char arr[] = "abcdef";int len = my_strlen(arr);printf("%d", len);return 0;} strlen函数的注意事项 字符串需要以作为结尾,strlen函数返回的是在字符串中前面出现的字符个数(不包含)参数指向的字符串必须要以作为结束注意函数的返回值类型是size_t类型模拟实现

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。