欢迎光临
我们一直在努力

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

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是不会计算\0的长度的,strlen函数遇到\0就会停止下来 下面来看一个代码 #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类型的便宜美国vps,都说的通,使用int类型的话,在有些情况下,可能会更加准确,就比如说是上面的那种情况,使用size_t类型确保了返回值都是正数,所以说,都说的通 1.计数器的方法 #include<stdio.h>#include<assert.h>int my_strlen(const char *str){assert(str);int count = 0;while (*str != ‘\0’){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 == ‘\0’)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 != ‘\0’){str++;}return str – ret;}int main(){char arr[] = “abcdef”;int len = my_strlen(arr);printf(“%d”, len);return 0;} strlen函数的注意事项 字符串需要以\0作为结尾,strlen函数返回的是在字符串中\0前面出现的字符个数(不包含\0)参数指向的字符串必须要以\0作为结束注意函数的返回值类型是size_t类型模拟实现

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。