strlen 的三种模拟方法

简介: strlen 的三种模拟方法

前言:

在C/C++ 中,strlen函数是一种计算字符串长度的库函数,要模拟此函数有多种方法,这里总结三种模拟方法。



1. strlen 函数介绍

  cplusplus - strlen

4c985f18723bd8325acbb8e43df77361_6db4849242f14859a7d2fed66972307b.png

strlen 函数的功能是计算字符串长度;

返回 size_t 类型(unsigned int 无符号整型)的数值;

使用此函数,只需传一个数组名。


一个字符串的末尾默认放有 '\0' ,通过统计 '\0' 之前出现的字符个数即可求得字符串长度,接下来的模拟都是按照这一思路


2.实现结果


2.1直观暴力型


循环 + 计数器即可

size_t my_strlen1(const char* str)
{
  assert(str != NULL);
    //断言,保证传入的字符不为空
  size_t len = 0; //普通的计数
  while (*str != '\0')  //普通的循环
  {
    len++;
    str++;
  }
  return len;
}


2.2指针 - 指针型


这种类型的思路 就是事先保存字符串起始位置的地址,后利用指针单独自加,最后两指针做差得出中间所夹字符个数。

size_t my_strlen2(const char* str)
{
  assert(str != NULL);
  char* start = str;
  while (*str)  //用单个字符本身做判断条件,当 '\0' 时不再进入循环
  {
    str++;
  }
  return str - start;
}


2.3递归型


strlen 也可以用递归实现啦 ~

思路就是 依然以不遇到 '\0' 为判断条件,满足条件就返回该字符(1)

继续用该函数从下一个字符开始统计

size_t my_strlen3(const char* str)
{
  assert(str != NULL);
  if (*str != '\0')
    return  1 + my_strlen3(str + 1);
  else
    return 0;
}

评价:

直观暴力型:最容易想到,中规中矩;

指针 - 指针型:代码小巧简洁;

递归型:累电脑,不容易想到,但可装x 。

你喜欢哪种呢?

目录
相关文章
|
C语言
strlen函数【详解+模拟实现】
strlen函数【详解+模拟实现】
|
6月前
模拟实现atoi函数
模拟实现atoi函数
33 1
strstr函数的使用及模拟实现
1.strstr函数 2.strstr函数的使用 3.strstr函数的模拟实现
142 0
|
6月前
atoi()详解及其模拟实现
atoi()详解及其模拟实现
|
6月前
atoi函数的模拟实现
atoi函数的模拟实现
|
11月前
模拟实现库函数strlen
模拟实现库函数strlen
29 0
三种方法模拟实现库函数strlen,加深对strlen的理解
三种方法模拟实现库函数strlen,加深对strlen的理解
|
存储 Serverless
strlen函数解析与模拟实现
strlen函数解析与模拟实现
strlen函数解析与模拟实现
strlen函数的两种模拟方法以及使用
strlen函数的两种模拟方法以及使用