模拟实现strlen函数

来源:互联网 发布:机电专业就业前景 知乎 编辑:程序博客网 时间:2024/05/21 21:23

字符串函数在我们编程之时,给我们提高了极大的方便,使得我们的代码清晰,明了,在平常,我们是极少需要编写自字符串函数的,但是,如果自己可以动手实现这些函数,对我们理解这些函数,有极大的帮助。
下面,我们用三种方式实现strlen函数:
方式一:计数器方法

int my_strlen(const char *arr){    assert(arr!=NULL);    int count = 0;    while (*arr != '\0')    {        count++;        arr++;    }    return count;}int main(){    char arr[] = "abcdef";    int ret = 0;    ret = my_strlen(arr);    printf("%d\n", ret);    system("pause");    return 0;}

将其简化,使得程序看起来更加简洁,代码如下:

int my_strlen(const char *arr){    assert(arr!=NULL);    int count = 0;    while (*arr++!= '\0')    {        count++;    }    return count;}int main(){    char arr[] = "abcdef";    int ret = 0;    ret = my_strlen(arr);    printf("%d\n", ret);    system("pause");    return 0;}

第二种方法:指针减指针

int my_strlen(const char *arr){    assert(arr != NULL);    const char* end = arr;    while (*end)    {        end++;    }    return end-arr;}int main(){    char arr[] = "abcdef";    int ret = 0;    ret = my_strlen(arr);    printf("%d\n", ret);    system("pause");    return 0;}

将其简化

int my_strlen(const char *arr){    assert(arr != NULL);    const char* end = arr;    while (*end++)    {            ;    }    return end - arr-1;}int main(){    char arr[] = "abcdef";    int ret = 0;    ret = my_strlen(arr);    printf("%d\n", ret);    system("pause");    return 0;}

方法三:利用递归的方法

int my_strlen(const char *arr){    assert(arr != NULL);    const char* end = arr;    while (*end)    {        end++;        1 + my_strlen(end);    }    return end - arr;}int main(){    char arr[] = "abcdef";    int ret = 0;    ret = my_strlen(arr);    printf("%d\n", ret);    system("pause");    return 0;}

实现库函数,不仅有利于我们对知识的掌握,更有利于我们清楚在平常使用这些函数的注意点,增强我们的学习技能。

原创粉丝点击