strlen函数的两种模拟方法以及使用

简介: strlen函数的两种模拟方法以及使用

下面我来给大家介绍一种字符串函数(strlen),说下如何构建一个函数来模拟它的作用以及这个函数的使用和注意事项 。

1.strlen函数,作用是计算字符串的长度(不包括'\0')以及计算数组的大小,它的原理是寻找'\0',找到了'\0'便停止(若找不到'\0',它将会一直找下去,但最终结果是一个随机值)。

知道了它的作用原理之后,我们可以构建一个新函数,来模拟它的作用。

第一种方法:计数器方法

#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
    assert(str != NULL);
    int count = 0;
    while (* str != '\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    int len = my_strlen("abcdef");
    printf("%d", len);
    return 0;
}

 

在这里定义一个cout = 0,如果找到一个,它不是‘\0’,cout便加1,若它为'\0',程序便结束。我在这个程序中,使用了一个assert函数(头文件是#include<assert.h>),使得这个程序更加完美,它一般在函数开始处使用,来检测传入参数的合法性(程序诊断,如果函数assert()括号内的不成立,程序结束),这里很明显str !=NULL  。

第二种方法:递归的方法(即不创建临时变量,来模拟strlen的作用,有的题目,可能会这样问

​​#include<stdio.h>
#include<assert.h>
int my_strlen(char* str)
{
    assert(str != NULL);
    if (*str != '\0')
    {
        return 1 + my_strlen(str + 1);
    }
    else
        return 0;
}
int main()
{
    char arr[100] = "abc";
    int ret = my_strlen(arr);
    printf("%d\n", ret);
    return 0;
}

这里同样使用了assert函数,来使程序变得更加严谨。

下面我们来直接使用strlen这个函数来看下

注意的是,使用strlen函数,要使用头文件#include<string.h>,在这里可以看到有两个字符数组,arr1和arr2,它们的区别在于arr1这个数组是有'\0'的,而arr2这个数组是没有'\0'的,所以就不能用strlen这么算,如果这么算的话,将会得到一个随机值(1)。

     这就是strlen函数的两种模拟方法以及使用,感谢大家的观看。

     第一次写博客,如果有写的不好之处还请指出,见谅。

相关文章
|
C语言
strlen函数【详解+模拟实现】
strlen函数【详解+模拟实现】
|
6月前
模拟实现atoi函数
模拟实现atoi函数
33 1
strstr函数的使用及模拟实现
1.strstr函数 2.strstr函数的使用 3.strstr函数的模拟实现
142 0
|
6月前
atoi函数的模拟实现
atoi函数的模拟实现
|
11月前
模拟实现库函数strlen
模拟实现库函数strlen
29 0
三种方法模拟实现库函数strlen,加深对strlen的理解
三种方法模拟实现库函数strlen,加深对strlen的理解
|
存储 Serverless
strlen函数解析与模拟实现
strlen函数解析与模拟实现
strlen函数解析与模拟实现
|
C++
strlen 的三种模拟方法
strlen 的三种模拟方法
101 0
strlen 的三种模拟方法
|
程序员 编译器
【strlen】三种方法模拟实现strlen字符串函数
【strlen】三种方法模拟实现strlen字符串函数
95 0
【strlen】三种方法模拟实现strlen字符串函数