C语言中求字符串长度的函数的几种实现方法

作者:ZWE7616175 时间:2023-07-04 23:29:05 

1.最常用的方法是创建一个计数器,判断是否遇到‘\0',不是'\0'指针就往后加一。


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

2.不创建计数器,从前向后遍历一遍,没有遇到‘\0'就让指针向后加一,找到最后一个字符,记下来地址,然后用最后一个字符的地址减去起始地址,就得到了字符串的长度。


int my_strlen(const char *str)
{
char *end = str;
assert(str!=NULL);
assert(end!=NULL);
while (*end != '\0')
{
end++;
}
return end - str;
}

3.不创建计数器,递归实现。


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

也可以写成这样:


int my_strlen(const char *str)
{
assert(str != NULL);
return (*str == '\0') ? 0 : (my_strlen(++str) + 1);
}

或者这样:


int my_strlen(const char *str)
{
assert(str != NULL);
return (*str == '\0') ? 0 : (my_strlen(str+1) + 1);
}

来源:https://blog.csdn.net/ZWE7616175/article/details/75516155

标签:C语言,字符串长度
0
投稿

猜你喜欢

  • 教你C#将CSV转为Excel的实现方法

    2021-09-18 00:42:03
  • 基于java中两个对象属性的比较

    2023-08-23 05:25:02
  • Java动态脚本Groovy

    2023-12-05 03:25:50
  • 一文带你学会Java事件机制

    2022-07-22 05:05:11
  • Java8中LocalDateTime与时间戳timestamp的互相转换

    2023-11-10 05:20:21
  • Android 自定义view仿支付宝咻一咻功能

    2023-06-01 07:42:09
  • 使用SpringBoot实现微服务超时重试模式的示例

    2021-12-28 13:58:45
  • java中找不到符号的解决方案

    2023-09-01 17:50:11
  • 死磕 java同步系列之synchronized解析

    2023-09-27 10:07:43
  • JAVA HashMap详细介绍和示例

    2023-04-07 00:17:43
  • Android EasyBarrage实现轻量级弹幕效果

    2022-03-07 06:46:31
  • android之BroadcastReceiver应用详解

    2021-08-31 16:05:21
  • Android中使用AspectJ详解

    2022-01-29 19:12:05
  • 教你使用springSecurity+jwt实现互踢功能

    2023-05-24 19:45:10
  • Android网络开发中GET与POST请求详解

    2022-05-28 23:23:53
  • Spring RestTemplate的使用与踩坑

    2022-01-12 21:43:14
  • Java多态性抽象类与接口细致详解

    2022-08-22 00:06:11
  • eclipse+maven+spring mvc项目基本搭建过程

    2022-12-18 03:50:52
  • IDEA设置生成带注释的getter和setter的图文教程

    2023-06-28 00:49:36
  • unity实现翻页按钮功能

    2021-07-15 03:33:47
  • asp之家 软件编程 m.aspxhome.com