在C语言中,strlen()函数可以求出一个字符串的长度,
其中呢,他的返回值是无符号整形unsigned int,他的头文件是string.h
strlen()函数的原理呢,就是从接收到的地址处往后寻找,直到找到'\0',就会停止统计,认为这个就是这个字符串的长度,并且将其返回。
接下来我们就是使用三种方式来模拟实现一下strlen函数
用计数器实现
//计数器的方式
unsigned int my_strlen1(char* str) {
unsigned int count = 0;
while (*str != '\0') {
count++;
str++;
}
return count;
}
使用递归
//递归的方法
unsigned int my_strlen2(char* str) {
if (*str == '\0')
return 0;
return my_strlen2(str + 1) + 1;
}
使用指针:
//指针相减的方法
unsigned int my_strlen3(char* str) {
char* temp = str;
while (*temp != '\0') {
temp++;
}
return temp - str;
}
来测试一下:
int main() {
char str[] = "abcdef";
printf("%u\n", my_strlen1(str));
printf("%u\n", my_strlen2(str));
printf("%u\n", my_strlen3(str));
return 0;
}
测试结果