mystrlen函数如何实现字符串长度计算?

99ANYc3cd6
预计阅读时长 6 分钟
位置: 首页 C语言 正文

C语言实现 mystrlen 函数

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

C语言mystrlen
(图片来源网络,侵删)

方法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;
}

注意事项

  1. 所有实现都使用 const 修饰符,确保不会修改原字符串
  2. 方法3的递归实现对于很长的字符串可能会导致栈溢出
  3. 这些实现都假设字符串是以 null 结尾的,这是C语言字符串的标准表示方式
  4. 方法1和方法2的性能基本相同,都是O(n)时间复杂度

最常用和推荐的是方法1(指针算术)和方法2(数组下标),它们既简洁又高效。

C语言mystrlen
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede联动模板免费在哪里下载?
« 上一篇 今天
如何用C语言求一元一次方程的解?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]