服务器之家

服务器之家 > 正文

浅析C++中strlen函数的使用与模拟实现strlen的方法

时间:2021-10-26 13:37     来源/作者:S for N

strlen函数的简单运用与模拟实现 strlen函数的简单使用strlen函数的三种模拟实现使用临时变量的方法使用函数递归的方法使用指针相减的方法

strlen函数的简单使用

?
1
strlen函数是用来计算字符串长度的一个函数,返回类型是size_t
?
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<string.h>
int main()
{
    char arr[] = "hello world";
    size_t;//返回值是size_t unsigned int
    int len = strlen(arr);
    printf("len=%d\n", len);
    return 0;
}

下面就是对于返回值类型是size_t的一个很形象的例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    const char* p1 = "abc";
    const char* p2 = "adbcdef";
    if (strlen(p1) - strlen(p2) > 0)
        //因为返回值是无符号数,所以没有负数
    {
        printf("hehe");
    }
    else
    {
        printf("haha");
    }
    return 0;
}

strlen函数的三种模拟实现

使用临时变量的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<assert.h>
//模拟实现strlen
size_t my_strlen(const char* str)
{
    int count = 0;//计数器
    assert(str != NULL);
    //断言不是空指针,如果没有这步,当是空指针的时候可能会崩溃
    while (*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char arr[] = "hello";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}

使用函数递归的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<assert.h>
//不使用临时变量
size_t my_strlen(const char* str)
{
    assert(str != NULL);
    if (*str != '\0')
    {
        return 1 + my_strlen(str + 1);
    }
    else
    {
        return 0;
    }
}
int main()
{
    char arr[] = "hello";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}

使用指针相减的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//指针相减的做法
size_t my_strlen(const char* str)
{
    assert(str != NULL);
    const char* start = str;
    //str 不能初始化char类型,所以用const
    while (*str != '\0')
    {
        str++;
    }
    return str - start;
}
int main()
{
    char arr[] = "hello";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}

到此这篇关于strlen函数的使用与模拟实现strlen的文章就介绍到这了,更多相关strlen函数模拟实现strlen内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/sfornyu/article/details/114338335

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部