- 1. 分析
- 2. 具体实现
- 文章索引
- 后记
1. 分析
我们先了解一下strlen函数的作用,strlen函数会根据我们传递的字符数组首地址计算字符串的长度比如:
// 代码1
char str[] = "abcdef";
strlen(str); // 6
// 代码2
char str[] = "abcd ef";
strlen(str); // 4
// 代码3
char* str = "abcdef";
strlen(str); // 6
// 代码4
char str[] = {'a', 'b', 'c'};
strlen(str); // 随机值
// 代码 5
char str[5] = "abcd"; // 实际存储的是 "abcd "
strlen(str); // 4
// 代码 6
char str[5] = "abcde";
strlen(str); // 随机值
大家可以在自己的电脑上将以上代码段运行,看看结果是不是这样的!
【思考】
为什么代码4 和 代码6 计算出来的长度是随机的?
因为字符串是以 为结束符号的,而代码4 和 代码6 都没有 作为结束标志。
其他的关于字符串的知识我这里就不做过多的赘述了,大家可以自行查资料,也可以和我讨论。
通过上面的例子我们知道,字符串是以 作为结束标志的,也就是说,无论你字符串怎么定义,只要我在这段连续的空间中遇到了 ,那么我就认为你的字符串结束了,就比如我们上面的代码2。
下面我们就开始动手写代码吧:
2. 具体实现#include#include int my_strlen(char* dest) { // 记录字符串长度 int len = 0; // 循环在遇到 时停止 while ( *dest != ' ' ) { // 长度 +1 len ++; // 指针后移一个单位 dest ++; } // 返回字符串长度 return len; }
测试代码大家自己写就行了
当然,上面的代码还不够好,我们对其进行改进
// version 2
int my_strlen(const char* dest)
{
assert(dest);
int len = 0;
while ( *dest++ ) len ++;
return len;
}
文章索引
模拟实现字符串拷贝函数 strcpy
数据结构单链表
后记
我水平有限,错误难免,还望各位加以指正。
本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)
本人博客所有文章,均为原创。部分文章中或引用相关资料,但均已著明来源出处。可随意转载、分享,但需加本文链接,以及版权说明。



