C analog strlen function

1. Topic

Implement the strlen function

2. Program code

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <Windows.h>
#include <assert.h>

int my_strlen1(const char *str)//创建临时变量
{
    assert(str);

    int count = 0;

    while (*str)
    {
        count++;
        str++;
    }

    return count;
}

int my_strlen2(const char *str)//递归函数
{
    assert(str);

    if (*str == '\0')
    {
        return 0;
    }

    return 1 + my_strlen2(str + 1);
}

int my_strlen3(const char *str)//指针相减法:指针-指针得到的就是中间元素的个数
                           //只有两个指针指向同一块内存时才可以使用
{
    assert(str);

    char *start = str;

    while (*start)
    {
        start++;
    }

    return start - str;
}

int main()
{
    char str[] = "abvdefg";

    printf("%d\n", my_strlen1(str));
    printf("%d\n", my_strlen2(str));
    printf("%d\n", my_strlen3(str));

    system("pause");
    return 0;
}

3. Execution results

write picture description here

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325871448&siteId=291194637