目录
1. strlrn函数
2. 注意事项:
3. 计数器法
4. 指针减指针方法:
5. 递归方法:
1. strlrn函数
头文件<string.h>
实现函数模拟须知:
• 字符串以 '\0' 作为结束标志
,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含 '\0' )。
• 参数指向的字符串必须要以 '\0' 结束。
• 注意函数的返回值为size_t,是⽆符号的( 易错 )
2. 注意事项:
1. size_t类型为unsigned int类型,因为字符串长度一定为正所以肯定是是无符号类型。当然int类型也可以,只是size_t更符合原函数。
2. 使用指针时最好assert断言一下避免将NULL地址解引用,保证函数的完备性
3. 用const来修饰形参,因为my_strlen函数是用来计算字符串大小的,不允许更改字符串中的内容,因此加上const确保函数内部不会误改原字符串。
3. 计数器法
#include <assert.h>
size_t my_strlen(const char* p)
{assert(p != NULL);int count = 0;while (*p){count++;p++;}return count;
}
4. 指针减指针方法:
#include <assert.h>size_t my_strlen(const char* p)
{assert(p != NULL);char* p1 = p;while (*p){p++;}return p - p1;
}
5. 递归方法:
#include <assert.h>size_t my_strlen(const char* p)
{assert(p != '\0');if (*p == '\0'){return 0;}else{return 1 + my_strlen(++p);}
}