字符串末尾的''是否也包含在此处?

Does the '' at the end of the string also get included here?

本文关键字:包含 字符串 是否      更新时间:2023-10-16

如果我声明一个包含 10 个元素的字符串,如下所示:

char s[10];

那么最后的"\0"是占据第10位还是第11位?基本上我的问题是我们在字符串中少得到 1 个元素吗?

如果我使用 strlen() 函数来查找这个字符串的长度,返回值会包含 null 吗?即如果字符串是"男孩",函数会给我 3 还是 4?

没有第 11 位,即,是的,少了一个可以使用的元素。

不要在其中放置超过 9 个字符的字符串。 Strlen()不包括空终止符。

例如:

char s[]="hello"; 

s 是一个包含 6 个字符的数组,但sstrlen()是 5。

是的,字符将占据第 10 位。这意味着,该字符串将仅包含 9 个输入字符。不,strlen()不计算空字符。

如果你声明一个这样的数组,它不需要在末尾有一个零字节。如果你调用任何需要字符串的函数,它几乎肯定会导致崩溃。您需要初始化数组:

char s[] = "This is a test."

如果你做这样的事情:

char s[10] = "012345678"
printf("%dn", strlen(s));

它显然会打印 9。您不能在该数组中放置 10 个字符,因为空字节会被写出数组边界。

如果声明一个包含 10 个字符的数组,则必须记住,其中一个必须用于字符串终止符,因此最多可以存储 9 个字符。

相反,strlen只返回"逻辑"字符的数量,即它不会计算空终止符。