第十一弹--模拟使用strlen

简介: 第十一弹--模拟使用strlen

模拟使用strlen

定义:size_t strlen ( const char * str );

字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
参数指向的字符串必须要以 ‘\0’ 结束。
注意函数的返回值为size_t,是⽆符号的( 易错 )
学会strlen函数的模拟实现

方法一:逐个计数法

size_t my_strlen(const char* str)
{
  int count = 0;
  assert(str);
  while(*str)//判断条件如果遇到‘\0’循环截止
  {
    count++;//进行计数
    str++;
  }
  return count;
}
int main()
{
  char arr1[] = "abcdef";
  int ret = my_strlen(arr1);
  printf("%d\n",ret);
  return 0;
}

方法二:指针-指针

size_t my_strlen(const char* str)
{
  assert(str);
  char* tmp = str;//取一个临时变量进行循环
  while (*tmp != '\0')//找到‘\0’的位置
  {
    tmp++;
  }
  return tmp - str;//指针-指针==两指针之间的元素个数
}
int main()
{
  char arr1[] = "abcdef";
  int ret = my_strlen(arr1);
  printf("%d\n",ret);
  return 0;
}

方法三:函数递归

size_t my_strlen(const char* str)
{
  assert(str);
  if (*str == '\0')//查看数组是否为空,为空返回0
  {
    return 0;
  }
  else
  return 1 + my_strlen(str+1);//只要*str不为\0就一直执行my_strlen(str+1) 每次个数增加1
}
int main()
{
  char arr1[] = "abcdef";
  int ret = my_strlen(arr1);
  printf("%d\n",ret);
  return 0;
}


相关文章
|
6月前
|
存储 Serverless C语言
C语言第十二弹--扫雷
C语言第十二弹--扫雷
|
6月前
|
C语言
C语言第四十八弹---多种方法模拟实现strlen函数
C语言第四十八弹---多种方法模拟实现strlen函数
|
6月前
|
C语言
C语言第四十九弹----模拟使用strcpy函数
C语言第四十九弹----模拟使用strcpy函数
|
11月前
|
C语言
C语言第十七弹--求100中9的个数
C语言第十七弹--求100中9的个数
|
6月前
|
C语言
C语言第三十八弹--模拟实现strcmp
C语言第三十八弹--模拟实现strcmp
|
6月前
|
C语言
C语言第四十一弹--模拟实现strlen
C语言第四十一弹--模拟实现strlen
|
6月前
|
C语言
C语言第五十一弹--模拟使用strncpy函数
C语言第五十一弹--模拟使用strncpy函数
|
6月前
|
C语言
C语言第五十二弹--模拟使用strncat
C语言第五十二弹--模拟使用strncat
|
6月前
|
C语言
C语言第五十四弹---模拟使用strstr函数
C语言第五十四弹---模拟使用strstr函数