
strlen()函数的问题 5
$str=array("大","更","创","天","科","客","博","技","立","新");$word=strlen($str);echo$word;为什么输...
$str=array("大","更","创","天","科","客","博","技","立","新");
$word=strlen($str);
echo $word;
为什么输出5,strlen不是计算长度的函数吗?能否解释一下。 展开
$word=strlen($str);
echo $word;
为什么输出5,strlen不是计算长度的函数吗?能否解释一下。 展开
3个回答
展开全部
strlen是从“头”开始,找到第一个'\0',当这个是尾,然后算这个头尾距离得出字符串长度。
C里面,是没有汉字的。所谓的存储汉字,实际上是用了两个字符的位置,输出的时候在组合成一个汉字。在内存里面,是拆成了两个相邻的字符存储。
算出是5的原因,应该是存储某一汉字时,其中一个字符恰好是'\0'。
而这个'\0'被strlen判定为字符串尾了~
C里面,是没有汉字的。所谓的存储汉字,实际上是用了两个字符的位置,输出的时候在组合成一个汉字。在内存里面,是拆成了两个相邻的字符存储。
算出是5的原因,应该是存储某一汉字时,其中一个字符恰好是'\0'。
而这个'\0'被strlen判定为字符串尾了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen函数判断字符串结束的标志是'\0',字符串在赋值时编译器会在长度范围内加一个'\0'作为字符串的结束标志,如你程序的b字符串第7个字符b[6]就是‘\0’, 但在字符串a中,你已经把申请的空间用完了,即a中只能放6个字符,所以编译器没加‘\0’, 用术语说就是内存泄露了,strlen对于a就一直找啊找啊,直到第12个字符才遇见'\0',所以说是12了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照我的理解,$str中储存的,应该是一个字符串指针的数组,用strlen去算这个数组,结果还真不好说。
追问
是数组啊,不过我改过数字里面,无论有多少个,打印的都是5.
追答
不知道你到底要求什么,如果是这个数组的长度,应该用count函数。strlen求的是字符串的长度,比如strlen("这是一个字符串")
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询