strlen是用来计算字符串长度的一个库函数,计数方式就是从字符串首地址开始往后计数,遇见'\0'停止。下面我将用三种方法来模拟实现strlen函数。
一,第一种
定义一个整型变量来计数
#include <stdio.h>
int my_strlen(char* str) {
int count = 0;
while (*str != '\0') {
count++;
str++;
}
return count;
}
int main() {
char arr[20] = "abcdef";
printf("%d",my_strlen(arr));
return 0;
}
运行结果如下:
二,第二种
不设置整型变量计数,采用递归方法实现。
#include <stdio.h>
int my_strlen(char* str) {
if(*str!='\0') {
return 1+my_strlen(str+1);
}
else {
return 0;
}
}
int main() {
char arr[20] = "abcdef";
printf("%d", my_strlen(arr));
return 0;
}
运行结果如下:
三,第三种
采用指针减指针的方式实现
#include <stdio.h>
int my_strlen(char* str) {
char* tmp = str;
while (*str != '\0') {
str++;
}
return str - tmp;
}
int main() {
char arr[20] = "-123456789";
printf("%d", my_strlen(arr));
return 0;
}
运行结果如下:
好了三种方式的代码和运行结果有了,这里只给出比较常见的三种,如果有小伙伴有更好的写法欢迎留言哦。