int main (int argc, char **argv)
{
char p[] = {1,2,3,4,5,66,7,};
char q[] = {1,2,3,4};
char r[] = {1,2,3,4};
printf("length:%d\n",strlen(p));
printf("length2:%d\n",strlen(q));
printf("length3:%d\n",strlen(r));
return 0;
} /* ----- End of main() ----- */
~/kill_C/dou.c CWD: /home/pikaqiu/kill_C Line: 30/35:5
[pikaqiu@centos6 kill_C]$ gcc dou.c
[pikaqiu@centos6 kill_C]$ ./a.out
length:11
length2:15
length3:19
我做了实验,发现p[] ={1},这样就是5,p[]={1,2,3,4}就是8,很固定。不晓得为什么,求大神来个具体解答!
不要上来跟就说strlen求字符数组长度要加'\0',不加'\0'就是随机值这种扯淡的。谢谢
你换台机器就不是5 8的值了! 所谓的固定,是你机器内存情况刚好处在那种状态下。
你没有\0,strlen()就会自动去找\0位置,这个0位置在什么位置是不确定的。
strlen(s)函数,从s首地址开始一直统计到\0位置,其中有几个字节就输出长度为几!
#include <stdio.h>#include <string.h>
void main()
{
int i=0; //这里加上这个,你再去试,结果一定会有变化的,原理,自己思考一下吧
char p[] = {1,2,3,4,5,66,7,};
char q[] = {1,2,3,4};
char r[] = {1,2,3,4};
printf("length:%d\n",strlen(p));
printf("length2:%d\n",strlen(q));
printf("length3:%d\n",strlen(r));
}