- 慧慧
-
strlen()只是统计字符串的长度,统计到" "结束,但不包括" ",这个与sizeof()不一样。
对于用双引号引起来的字符串,系统默认最后一位字符为" ",如你自己定义的:
char a[]="china";
char b[]={"china"};
另外,数组初始化还可以是一个字符一个字符赋值,如:
char c[]={"c","h","i","n","a"};
char d[]={"c","h","i","n","a"," "};
但系统不会自动给你在最末位添加" "
所以在统计char c[]={"c","h","i","n","a"}时,统计到a时,系统还没找到 ,所以会继续统计,直到找到" "为止。所以就有你第三个值为11的情况,这个根据不同的运行环境而定。
- 康康map
-
strlen是测量字符串长度的
char d[]={"c","h","i","n","a"," "}和char a[]="china"; char b[]={"china"}; 是等价的 是数组的表示形式
而char c[]={"c","h","i","n","a"};却是字符数组所以并不能得到结果
- CarieVinne
-
strlen函数测量字符串中字符个数,不包括结尾的" "字符,你的 char c[]没有结尾的‘ "不是合法的字符串,所以结果不对
- okok云
-
strlen是字符串长度统计函数,他不包含字符串结束符“ ”;
求字符数组长度可以用 sizeof()如你上面的问题可以用:
sizeof(c)/sizeof(c[0])
- 可可
-
strlen是求字符串长度的函数。
函数原型:unsigned int strlen(char *s);
参数:s是char类型的指针,指向要求长度的字符串
返回值:返回字符串的长度,返回类型是无符号整型
注意:
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符" "为止,然后返回计数器值(长度不包含“ ”)。
实例:
#include<string.h>
#include<stdio.h>
int main(void)
{
char*s="GoldenGlobalView";
printf("%s has %d chars",s,strlen(s));
getchar();
return 0;
}