strlen的递归,常规(创建计数器),以及指针实现

来源:互联网 发布:自学matlab 知乎 编辑:程序博客网 时间:2024/06/14 06:54
strlen递归实现:
#include<stdlib.h>#include<string.h>#include<assert.h>#include<stdio.h>size_t my_strlen( const char*str){assert(str);if (*str!='\0'){return 1 + my_strlen(str + 1);//递归}elsereturn 0;}int main(){char*p = "abcdef"; int ret=my_strlen(p);printf("%d\n", my_strlen(p));system("pause");return 0;}

strlen常规实现:

#include<stdlib.h>#include<string.h>#include<assert.h>#include<stdio.h>size_t  my_strlen(const char*str){assert(str);int count = 0;//创建计数器while (*str){count++;str++;}return count;}int main(){char*p = "abcdef"; int ret=my_strlen(p); printf("%d\n",my_strlen(p));system("pause");return 0;}
strlen指针实现:

#include<stdlib.h>#include<string.h>#include<assert.h>#include<stdio.h>size_t my_strlen(const char*str){assert(str);char*end = str;while (*end){end++;}return end - str;//地址相减其实是元素个数。而中间元素又是字符组成,也就是字符个数}int main(){char*p = "abcdef";// int ret=my_strlen(p);printf("%d\n", my_strlen(p));system("pause");return 0;}
以上就是我对strlen的三种实现,欢迎大家指教

原创粉丝点击