strlen()函数的模拟实现

Posted 我是晓伍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strlen()函数的模拟实现相关的知识,希望对你有一定的参考价值。

在c语言中,strlen()函数储存在string.h头文件中,作用是计算一个字符串的字符数。
实际上,这个函数内部运行中检测到\\0则停止运行,之后返回字符数。

下面我们通过三种方法模拟实现该函数的功能。

1.计数器法

代码如下

#include <stdio.h>
#include <assert.h>
int myStrlen(const char *p)

	assert(p != NULL);
    int count = 0; //开始假设字符串中字符数为0
    while (*p != '\\0')
    
        count++; //p解应用得到的不是\\0说明遇到了字符
        p++;     //指针指向下一个元素
    
    return count;

int main()

    char arr[10] = "cdefgab";
    int ret = myStrlen(arr);
    printf("%d\\n", ret);
    return 0;

输出结果如下

2.递归法

代码如下

#include <stdio.h>
#include <assert.h>
int myStrlen(const char *p)

	assert(p != NULL);
    if (*p != '\\0')
    

        return myStrlen(++p) + 1; //如果不为\\0则返回1+从下个字符开始的字符数
    
    else
    
        return 0; //如果*p == \\0则返回0个字符
    

int main()

    char arr[10] = "cdefga";
    int ret = myStrlen(arr); //函数作用为返回字符串字符个数
    printf("%d\\n", ret);
    return 0;

输出结果如下

3.指针减指针法

代码如下

#include <stdio.h>
#include <assert.h>
int myStrlen(char *begin)

    //指针减指针得到的是相差的元素个数
    //在例子中就是第一个元素和\\0相差的个数,也就是字符个数
    assert(begin != NULL);
    char *end = begin; //用end指针指到]\\0
    while (*end != '\\0')
    
        end++;
    
    return end - begin;

int main()

    char arr[10] = "abcid";
    int ret = myStrlen(arr); //函数作用为返回字符串字符个数
    printf("%d\\n", ret);
    return 0;

输出结果如下

over

以上是关于strlen()函数的模拟实现的主要内容,如果未能解决你的问题,请参考以下文章

模拟实现Strlen函数

strlen()函数的模拟实现

strlen()函数的模拟实现

strlen函数详解&&注意事项&&模拟实现

字符串函数的使用与模拟实现

str系列库函数--模拟实现