#include <stdio.h>
int main(int argc, char *argv[]) {
char s[]="help";
printf("%d",strlen(s));
}
为什么上面的输出是4,是不是5是正确的答案?
它应该是内存中的'h','e','l','p','\ 0'.. 谢谢。
答案 0 :(得分:44)
strlen
:返回给定字节字符串的长度,不包括空终止符;
char s[]="help";
strlen(s) should return 4.
sizeof
:返回给定字节串的长度,包括null终止符;
char s[]="help";
sizeof(s) should return 5.
答案 1 :(得分:5)
strlen
计算元素,直到它到达空字符,在这种情况下,它将停止计数。它不包括它的长度。
答案 2 :(得分:4)
strlen()
不计算数组中的字符数(事实上,这可能甚至不可知(如果你只有指向内存的指针,而不是数组)。就像你一样已经找到,计算最多但不包括空字符的字符数。考虑char s[] = {'h','i','\0','t','h','e','r','e'};
答案 3 :(得分:2)
这是4。
strlen()计算最多但不包括第一个值为0的字符数 - nul终结符。
答案 4 :(得分:2)
strlen(const char* ptr)
通过计算从零到零的非零元素来返回字符串的长度。所以'\0'
不算数。
我建议您查阅link等参考文章,以获取此类问题。
明确表示:
A C string is as long as the number of characters between the beginning
of the string and the terminating null character (without including the
terminating null character itself).