【发布时间】:2021-03-22 13:42:22
【问题描述】:
我对c中的字符串长度想了很多,字符串以空字符'\0'结尾,它在文本中不可见,从c代码中可以看出:
#include <stdio.h>
#include <string.h>
int main(){
char s1[] = "ould";
printf("ould string length is %ld\n", strlen(s1));
char s2[] = {'o','u','l','d','\0'};
printf("ould string length is %ld\n", strlen(s2));
return 0;
}
书在3.9节最后说,s2是等价的,但是数组大小是5,从运行结果来看是4,根据我的理解和搜索,字符串以'\0'结尾,但是'\ 0'不会作为字符串长度包含在内,但是为什么作者说是5呢? 任何人都可以就此分享想法或澄清吗?
【问题讨论】:
-
strlen不是数组大小。它是字符串的大小,最大(不包括)'\0'。包含它的数组可能要大得多。 -
????????请在此处以纯文本形式发布代码、错误、示例数据或文本输出,而不是难以阅读、无法复制粘贴以帮助测试代码或在答案中使用的图像,并且对依赖的人构成障碍在屏幕阅读器或翻译工具上。您可以编辑问题以在问题正文中添加代码。为了便于格式化,请使用
{}按钮标记代码块,或者使用四个空格缩进以获得相同的效果。 屏幕截图的内容无法搜索、作为代码运行或复制和编辑以创建解决方案。 -
包含字符串的字符数组必须至少比它所包含的字符串大 1 个字符,才能为终止的空字符留出空间。字符串 length 不包括这个终止空字符。所以数组的大小为 5,字符串的长度为 4。
-
字符串长度为4,字符数组大小为5。如果有空终止符的空间,字符数组可以用来表示字符串。就是这样。查看链接的副本。
标签: c