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函数的两种模拟方法以及使用,感谢大家的观看。

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

相关文章
|
7月前
|
C语言
strlen函数【详解+模拟实现】
strlen函数【详解+模拟实现】
|
8月前
strstr函数的使用及模拟实现
1.strstr函数 2.strstr函数的使用 3.strstr函数的模拟实现
72 0
|
6天前
atoi函数的模拟实现
atoi函数的模拟实现
|
5月前
模拟实现库函数strlen
模拟实现库函数strlen
15 0
|
10月前
|
存储 Serverless
strlen函数解析与模拟实现
strlen函数解析与模拟实现
strlen函数解析与模拟实现
|
9月前
模拟实现atoi函数
模拟实现atoi函数
|
9月前
三种方法模拟实现库函数strlen,加深对strlen的理解
三种方法模拟实现库函数strlen,加深对strlen的理解
|
12月前
模拟实现strlen
模拟实现strlen
|
12月前
模拟实现strcpy
模拟实现strcpy
|
12月前
|
编译器 C语言 C++
模拟实现strcmp
模拟实现strcmp