C语言实现 mystrlen 函数
mystrlen 是一个自定义的字符串长度计算函数,用于计算以 null 结尾的字符串的长度,以下是几种不同的实现方式:

(图片来源网络,侵删)
方法1:使用指针算术
#include <stdio.h>
int mystrlen(const char *str) {
const char *p = str;
while (*p != '\0') {
p++;
}
return p - str;
}
int main() {
char str[] = "Hello, World!";
printf("Length: %d\n", mystrlen(str));
return 0;
}
方法2:使用数组下标
#include <stdio.h>
int mystrlen(const char str[]) {
int len = 0;
while (str[len] != '\0') {
len++;
}
return len;
}
int main() {
char str[] = "Hello, World!";
printf("Length: %d\n", mystrlen(str));
return 0;
}
方法3:递归实现
#include <stdio.h>
int mystrlen(const char *str) {
if (*str == '\0') {
return 0;
}
return 1 + mystrlen(str + 1);
}
int main() {
char str[] = "Hello, World!";
printf("Length: %d\n", mystrlen(str));
return 0;
}
方法4:使用标准库函数(不推荐,仅作参考)
#include <stdio.h>
#include <string.h>
int mystrlen(const char *str) {
return strlen(str);
}
int main() {
char str[] = "Hello, World!";
printf("Length: %d\n", mystrlen(str));
return 0;
}
注意事项
- 所有实现都使用
const修饰符,确保不会修改原字符串 - 方法3的递归实现对于很长的字符串可能会导致栈溢出
- 这些实现都假设字符串是以 null 结尾的,这是C语言字符串的标准表示方式
- 方法1和方法2的性能基本相同,都是O(n)时间复杂度
最常用和推荐的是方法1(指针算术)和方法2(数组下标),它们既简洁又高效。

(图片来源网络,侵删)
