今天在刷题,刷到一个C语言字符串长度的问题,求大佬解答。
题:
设char s[]="\t\ Name\\Address\n";,s的长度是:
答案是16.可是我怎么数都是15啊...请问我哪里错了?
今天在刷题,刷到一个C语言字符串长度的问题,求大佬解答。
题:
设char s[]="\t\ Name\\Address\n";,s的长度是:
答案是16.可是我怎么数都是15啊...请问我哪里错了?
如果你这样赋值:
int main(void)
{
char s2[] = { '\t', '\ ', 'N', 'a', 'm', 'e', '\\', 'A', 'd', 'd', 'r', 'e', 's', 's', '\n' };
printf("%d\r\n", sizeof(s2));
return 0;
}
得到的就会是15。
"abcd"
在 C 语言里,是一个字符数组(char[]
)。字符数组需要存放所有的字符,加上最后作为字符串结束标志的'\0'
。sizeof
由于一个字符数组,会得到字符数组的长度(而不是其中的字符串)。sizeof("abcd") == 5
,因为字符数组的长度是 5 ('a', 'b', 'c', 'd', '\0'
)。一般说的字符串的长度,不包括最后
'\0'
,不能用sizeof
获取,需要用strlen
。