我已经定义了字符串:
char ch[300];
当我得到字符串长度时
strlen(ch);
我总是有长度等于323
。为什么我有这个神奇的数字?
是否因为函数 strlen 正在寻找第一个0x00
字节并超出数组而发生?
让 strlen 离开数组是否安全?
这是否意味着如果我想使用 strlen 函数,我必须将最后一个字节设置为 ch[300]=0
?
是否因为函数 strlen 正在寻找第一个 0x00 字节并超出数组而发生?
是的
让 strlen 离开数组是否安全?
不
这是否意味着如果我想使用 strlen 函数,我必须将最后一个字节设置为 ch[300]=0 ?
几乎 -ch[299] = 0;
此外,您应该在已初始化的缓冲区上调用它,而不是在未初始化的缓冲区上。
strlen 搜索第一次出现的0x00
. 如果没有找到,它会继续计数。这可能非常危险。如果您尝试获取超出范围的值,您的程序可能会崩溃,或者您可能会得到无法预料的结果。始终确保字符串为空终止。