[英]char array and string length
我定义了字符串:
char ch[300];
当我得到字符串长度
strlen(ch);
我的长度始终等于323
。 为什么我有这个魔术数字?
因为函数strlen正在寻找第一个0x00
字节并超出数组,这会发生吗?
让strlen走出数组是否安全?
这是否意味着如果我想使用strlen函数,必须将最后一个字节设置为ch[300]=0
?
strlen搜索首次出现0x00
。 如果找不到,它将继续计数。 这可能非常危险。 如果您尝试获取超出范围的价值,则程序可能会崩溃,或者可能会得到无法预料的结果。 始终确保String以null终止。
因为函数strlen正在寻找第一个0x00字节并超出数组,这会发生吗?
是
让strlen走出数组是否安全?
没有
这是否意味着如果我想使用strlen函数,必须将最后一个字节设置为ch [300] = 0?
几乎ch[299] = 0;
此外,您应该在初始化缓冲区而不是未初始化缓冲区上调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.