你本来就是要打印字符数组的长度,也就是元素的个数的,只不过%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;
}
希望以上解答能对您有所帮助。如果还有其他问题,请随时提问。
【相关推荐】