如果我声明一个包含 10 个元素的字符串,如下所示:
char s[10];
那么最后的'\0'是占据第10位还是第11位呢?基本上我的问题是我们是否在字符串中少了 1 个元素?
如果我使用 strlen() 函数来查找这个字符串的长度,返回值是否包含 null?即,如果字符串是“boy”,函数会给我 3 还是 4?
没有第 11 位,也就是说,是的,那就是少了一个要使用的元素。
不要在其中放置超过 9 个字符的字符串。 Strlen()
不包括空终止符。
例如:
char s[]="hello";
s
是 6 个字符的数组,但strlen()
ofs
是 5。
是的,该\0
角色将占据第 10 位。意思是,字符串将只包含 9 个输入字符。不,strlen()
不计算空字符。
如果你声明一个这样的数组,它不需要在末尾有一个零字节。如果你调用任何需要字符串的函数,它几乎肯定会导致崩溃。您需要初始化数组:
char s[] = "This is a test."
如果你做这样的事情:
char s[10] = "012345678"
printf("%d\n", strlen(s));
它显然会打印 9。您不能在该数组中放入 10 个字符,因为空字节会被写入数组边界之外。
如果您声明一个 10 个字符的数组,您必须记住其中一个必须用作字符串终止符,因此您最多可以存储 9 个字符。
strlen
, 相反,只返回“逻辑”字符的数量,即它不会计算空终止符。