strlen()值如何自动更改?

时间:2015-12-22 18:20:33

标签: c string strlen

我写了这段代码 -

char s1[10] = "he",  s2[20] = "she", s3[30], s4[30];

printf("%d %d", strlen(s2) + strlen(s3), strlen(s4));

输出 -

6 9

然后我写了这段代码 -

char s1[10] = "he",  s2[20] = "she", s3[30], s4[30];

printf("%d %d", strlen(s3), strlen(s4));

删除strlen(s1) +

输出 -

0 3

关于字符串s4的长度如何变化的问题?

2 个答案:

答案 0 :(得分:2)

s3s4未初始化,并且不是'\0'终止的C字符串,这是strlen()所期望的。所以你不能将它们传递给strlen()

您看到的是undefined behaviour

答案 1 :(得分:2)

你说“字符串s4”,但s4不包含字符串。这是一个没有特定内容的字符数组。您只能在C风格的字符串上执行strlen。所以你的代码就破了。它的行为是不可预测的。