-1

我已经定义了字符串:

char ch[300];

当我得到字符串长度时

strlen(ch);

我总是有长度等于323。为什么我有这个神奇的数字?

是否因为函数 strlen 正在寻找第一个0x00字节并超出数组而发生?

让 strlen 离开数组是否安全?

这是否意味着如果我想使用 strlen 函数,我必须将最后一个字节设置为 ch[300]=0

4

2 回答 2

3

是否因为函数 strlen 正在寻找第一个 0x00 字节并超出数组而发生?

是的

让 strlen 离开数组是否安全?

这是否意味着如果我想使用 strlen 函数,我必须将最后一个字节设置为 ch[300]=0 ?

几乎 -ch[299] = 0;此外,您应该在已初始化的缓冲区上调用它,而不是在未初始化的缓冲区上。

于 2012-09-12T09:55:00.393 回答
3

strlen 搜索第一次出现的0x00. 如果没有找到,它会继续计数。这可能非常危险。如果您尝试获取超出范围的值,您的程序可能会崩溃,或者您可能会得到无法预料的结果。始终确保字符串为空终止。

于 2012-09-12T09:54:13.060 回答