使用strlen函数

img


打出来是一串数字,字符数组里面写abcde会报错,希望大家帮我看看哪里错了,感谢^ω^

你本来就是要打印字符数组的长度,也就是元素的个数的,只不过%u是打印无符号整型,而size_t 是无符号长整型
另外 计算长度,判断字符是不是结束符'\0', 而不是'0', 这个改掉

字符数组以字符'\0'表示结束

【以下回答由 GPT 生成】

问题1: 当将字符串"abcde"作为参数传递给strlen函数时,出现了报错。请问这是为什么?

答案: 问题出现在#include这一行。strlen函数需要用到string.h头文件中的声明。在C语言中,头文件的声明告诉编译器有哪些函数和变量可以使用。可以通过在编译命令中添加"-lstring"选项来链接string.h库。修改代码如下:

#include<stdio.h>
#include<string.h>
#include<assert.h>

int main() {
    char arr[] = "abcde";
    size_t len = strlen(arr);
    printf("%zu\n", len);

    return 0;
}

问题2: 在我的自定义函数My_strlen中,返回值类型我设置为size_t,但是在主函数中调用时提示类型不匹配的错误,请问如何解决?

答案: 问题出现在main函数中调用My_strlen时,使用了错误的返回值类型。My_strlen函数返回的是size_t类型,而printf函数中使用的格式控制符%zu也是用来打印size_t类型的值。修改代码如下:

#include<stdio.h>
#include<string.h>
#include<assert.h>

size_t My_strlen(const char *p) {
    size_t num = 0;

    assert(p);

    while(*p != '\0') {
        num++;
        p++;
    }

    return num;
}

int main() {
    char arr[] = "ab";
    size_t n = My_strlen(arr);
    printf("%zu\n", n);

    return 0;
}

希望以上解答能对您有所帮助。如果还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^