摘要:本文主要向大家介绍了C语言的strlen函数的几种实现方法,通过具体的代码向大家展示,希望对大家学习C语言有所帮助。
本文主要向大家介绍了C语言的strlen函数的几种实现方法,通过具体的代码向大家展示,希望对大家学习C语言有所帮助。
strlen函数是用来计算字符串长度的一个函数,其包含在string.h头文件中。
例如:假设一个字符串为“abcdef”,在经过strlen函数计算后应该为6。
[cpp] view plain copy 1. #include 2. #include 3. int main() 4. { 5. int ret = 0; 6. char arr[] = "abcdef"; 7. ret = strlen(arr); 8. printf("%d\n",ret); 9. return 0; 10. }
那么,这个函数是具体如何实现的呢?我们可不可以编写一个具有计算字符串长度的函数呢?
方式1:
使用while循环逐一判断,再用创建一个变量count来计数,直到遇到"\0"退出循环。
[cpp] view plain copy 1. int my_strlen(const char* arr) //不需要改变字符串的值,故用const修饰,提高函数安全性 2. { 3. int count = 0; 4. while(*arr) 5. { 6. count++; 7. arr++; 8. } 9. return count; 10. }
方式2:
运用递归的思想,从前向后逐字符判断,若此字符不为“\0”,则返回下一个递归函数,直到遇到字符“\0”结束递归。
[cpp] view plain copy 1. int my_strlen(const char* arr) 2. { 3. if(*arr) 4. return 0; 5. else 6. return 1+my_strlen(arr+1); 7. }
方式3:
运用指针的减法来判断(注:减法运算的值是两个指针在内存中的距离,以数组元素的长度为单位,例如指针p1指向arr[i],指针p2指向arr[j],则p2-p1就是j-i的值,即也就是间隔之间的元素个数。)
[cpp] view plain copy 1. int my_strlen(const char* arr) 2. { 3. char *p = arr; //定义一个指针存放字符串首元素的地址 4. while(*p != '\0') 5. p++; 6. return p-arr; 7. }
最后,我们也可以看看在库函数中它是如何实现的(用的平台为VS2008)
[cpp] view plain copy 1. size_t __cdecl strlen ( 2. const char * str 3. ) 4. { 5. const char *eos = str; 6. 7. while( *eos++ ) ; 8. 9. return( eos - str - 1 ); 10. }
可以看出,它用的是指针的减法运算来计算字符串长度,由于它在循环中使用自增,到最后为“\0”时,多加1次,因此最后返回时减去1。
strlen函数是用来计算字符串长度的一个函数,其包含在string.h头文件中。
例如:假设一个字符串为“abcdef”,在经过strlen函数计算后应该为6。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号