【C语言】模拟实现strlen库函数

简介: 大家在看本文之前如果还不了解strlen函数的话可以参考一下我写的这篇博客:【C库函数】qsort函数详解

大家在看本文之前如果还不了解strlen函数的话


可以参考一下我写的这篇博客:【C库函数】qsort函数详解


1、给模拟函数起个名字

先给模拟实现的函数起个名吧,就叫my_strlen


然后创建一个字符型数组,把数组地址传给my_strlen,并用len变量接收my_strlen的返回值。

int main()
{
    char str[] = "abcdef";
    int len = my_srlen(str);
    printf("%d",len);
    return 0;
}

2、定义my_strlen函数,并写出my_strlen的原型

       因为my_strlen接受的是str[]数组首元素地址,所以要用指针来接手,同时my_strlen不会改变数组内字符的内容,所以我用const来修饰一下,保护指针所指向的内容。最后返回类型我们可以设计成int,当然我们也可以像库里面的一样设计成size_t类型(无符号整数)

//size_t strlen(const char* str)
int my_strlen(const char* str)
{
}

3、实现my_strlen函数功能

        my_stlen中参数是指针要想字符内容,则解引用地址就行了,定义一个整型变量,每当判断该地址所指向字符不为‘\0’时,变量++指针++。

int my_strlen(const char* str)
{
    int count = 0;
    while (*str)
    {
        count++;
        str++;
    }
    return count;
}

同时,为了避免接受空指针,我还需添加一个检测函数assert

int my_strlen(const char* str)
{
    assert(str != NULL);
    int count = 0;
    while (*str)
    {
        count++;
        str++;
    }
    return count;
}

完整实现代码如下

#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
    assert(str != NULL);
    int count = 0;
    while (*str)
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char str[] = "abcdef";
    int len = my_strlen(str);
    printf("%d", len);
    return 0;
}
相关文章
|
17小时前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数
|
4天前
|
C语言
C语言prinf函数
C语言prinf函数
10 4
|
2天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
|
2天前
|
C语言
C语言的标准库:string.h, math.h, stdlib.h
C语言的标准库:string.h, math.h, stdlib.h
8 1
|
4天前
|
编译器 程序员 Serverless
函数(C语言)
函数(C语言)
|
3天前
|
机器学习/深度学习 C语言
详细解读C语言math.h中常用函数
详细解读C语言math.h中常用函数
|
4天前
|
C语言
C语言刷题(函数)
C语言刷题(函数)
|
4天前
|
存储 C语言
c语言scanf函数用法
c语言scanf函数用法
|
4天前
|
C语言
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
【海贼王编程冒险 - C语言海上篇】库函数怎样模拟实现?
7 1
|
2天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
9 0