为什么会出现这种情况,好像没有什么问题啊,求解答 ,谢谢
为什么会出现这种情况,好像没有什么问题啊,求解答 ,谢谢
首先看加没有头文件,然后就是arr2没有\0 那么用字符串函数打印出来就是随机值
strlen是c标准库中的,返回值是size_t类型,参考:https://noerror.net/zh/cpp/string/byte/strlen
把%d换成%u就可以了
第二个数组没有字串结束符号。
应该这样:
char arr2[]={ 'a', 'b', 'c', '\0'};
看看最前面有没有包含头文件
string.h
如果没有就包含此头文件
#include<string.h>
因为函数strlen在此头文件中声明的。
最后你的编译提示你格式化输出用 %zd 而不是用%d
因为size_t是个无符号整型类型。%d是有符号整型int的输出格式。严格来说应该要按提示去做。
%d是输出一个整型数,就是有可能为负数,而strlen的返回值为无符号整型,也就是正整数。所以编译器会有警告。