char数组和字符串长度

时间:2012-09-12 09:49:17

标签: c char

我已经定义了字符串:

char ch[300];

当我获得字符串长度

strlen(ch);

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

是否会发生这种情况,因为函数strlen正在查找第一个0x00字节并且在数组之外?

让strlen离开阵列是否安全?

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

2 个答案:

答案 0 :(得分:3)

strlen搜索第一次出现0x00。如果它没有找到这个,它继续计数。这可能非常危险。如果你试图获得超出范围的值,你的程序可能会崩溃,或者你可能会得到不可预测的结果。 始终确保String终止为空。

答案 1 :(得分:3)

  

是否会发生这种情况,因为函数strlen正在寻找第一个0x00字节并且在数组之外?

  

让strlen离开数组是否安全?

没有

  

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

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