int i;
char a[5]={1,2,0,4,5};
printf("%d",strlen(a));
return 0;
在这个程序中输出值为2
同样如果我把0放在最后一位,即12340,输出值为4
我的疑问在于,0是不是strlen所能识别的字符?为什么我输入空格后,比如三个空格,系统会只显示有两个字符?
char a[5]={1,2,0,4,5};
这里数组存在越界啊
strlen是靠循环遍历结尾的0来计算长度的。所以必须字符串结尾有0,没有0,结果是未知的。
你好,使用strlen函数需要将字符串以null结尾,否则strlen函数会继续向后寻找,直到遇到null为止。在你的例子中,数组a并不是以null结尾的,因此strlen函数的结果是不确定的。正确的写法应该是:
char a[6] = {1, 2, 0, 4, 5, '\0'}; // 注意数组长度要加1,最后一位是null
printf("%d", strlen(a)); // 输出3,因为遇到null之前共有3个字符
如果你把0放在最后一位,即1230,那么可以这样写:
char a[5] = {1, 2, 3, 0, 0}; // 注意数组长度要加1,最后一位是null
printf("%d", strlen(a)); // 输出3,因为遇到null之前共有3个字符
希望能帮到你,有任何问题欢迎继续提问。
0 是 strlen() 可以识别的,字符串结束符 '\0' 就是数值 0 。