返回

初识C字符串,抛开strlen

闲谈

使用内存地址计算字符串长度

当我们在 C 语言中定义一个字符串时,编译器会为它分配一块内存空间,并在内存中以字节的形式存储字符串。我们可以通过指针来访问这块内存空间,而字符串的长度就是从字符串的首地址到字符串的末尾地址之间的字节数。

#include <stdio.h>

int main()
{
    char *str = "Hello, world!";

    // 计算字符串长度
    int len = 0;
    while (*str != '\0')
    {
        len++;
        str++;
    }

    // 打印字符串长度
    printf("字符串 \"%s\" 的长度是 %d\n", str, len);

    return 0;
}

上面的代码中,我们使用了一个名为 str 的指针来访问字符串 "Hello, world!"。然后,我们使用一个 while 循环来遍历字符串,直到遇到字符串的末尾字符 '\0'。在每次循环中,我们都会增加 len 的值,并使用 str++ 将指针移动到下一个字符。最后,我们打印出字符串的长度。

使用指针和数组计算字符串长度

在 C 语言中,字符串通常被表示为一个字符数组。我们可以通过指针来访问字符数组中的元素,也可以通过数组下标来访问元素。因此,我们可以使用指针和数组来计算字符串的长度。

#include <stdio.h>

int main()
{
    char str[] = "Hello, world!";

    // 计算字符串长度
    int len = 0;
    while (str[len] != '\0')
    {
        len++;
    }

    // 打印字符串长度
    printf("字符串 \"%s\" 的长度是 %d\n", str, len);

    return 0;
}

上面的代码中,我们使用了一个名为 str 的字符数组来存储字符串 "Hello, world!"。然后,我们使用一个 while 循环来遍历字符数组,直到遇到字符串的末尾字符 '\0'。在每次循环中,我们都会增加 len 的值。最后,我们打印出字符串的长度。

总结

在 C 语言中,计算字符串长度的方法有很多。我们可以使用 strlen() 函数,也可以使用内存地址、指针和数组来计算字符串长度。每种方法都有其优缺点,我们可以根据自己的需要选择合适的方法。

扩展阅读