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