第1个输出是8
创新互联是一家以网站建设、网页设计、品牌设计、软件运维、网站推广、小程序App开发等移动开发为一体互联网公司。已累计为花箱等众行业中小客户提供优质的互联网建站和软件开发服务。
10。sizeof运算符得到的是数组的占用字节的大小,在定义数组a的时候没有指明大小,编译器根据初始化的内容来决定a的大小,"abcdefg"是个字符串,连同表示字符串结束的'\0'共有8个字符,1个字符类型占用1个字节,所以sizeof(a)是8。在定义数组b的时候已经指明了大小,所以sizeof(b)是10。
第2个输出是5
20。strlen函数是计算字符串的长度,字符串以'\0'表示结束,所以strlen在遇到hello后面的'\0'时就会返回。sizeof跟第1个问题一样。
C语言中测试字符串长度的函数是strlen()
函数原型:
unsigned int strlen (char *s);
头文件:
#include string.h
代码如下
#includestdio.h
#includestring.h
int main()
{
char str[] = "aaaaaa";
printf("strlen(str)=%d\n", strlen(str1));
return 0;
}
最好的方法是自己编写一个函数。如果你要偏方的话,我以前用过这样一个偏方(VC6):先用itoa函数将其转换成字符串,在用strlen函数,求字符串的长度。 这两个函数:itoa是在stdlib.h中定义的. strlen是在string.h中的 例子: int num=999; char buff[20]; int len; itoa(num,buff,10); len=strlen(buff);
希望采纳
#includestdio.h
#includestring.h
void main()
{
char s[]= "123456789", a[]= "012345678";
printf("数组 s 长度为:%d\n", strlen(s));
if(strcmp(s, a)0)
printf("数组 s 数组 a");
else if(strcmp(s, a)==0)
printf("数组 s=数组 a");
if(strcmp(s, a)0)
printf("数组 s 数组 a");
printf("\n");
}
strlen只可以用来测量char*字符串的长度,求数组长度(比如int a[])要用sizeof(a)/sizeof(int)
strlen()只是统计字符串的长度,统计到'\0'结束,但不包括'\0',这个与sizeof()不一样。
对于用双引号引起来的字符串,系统默认最后一位字符为'\0',如你自己定义的:
char a[]="china";
char b[]={"china"};
另外,数组初始化还可以是一个字符一个字符赋值,如:
char c[]={'c','h','i','n','a'};
char d[]={'c','h','i','n','a','\0'};
但系统不会自动给你在最末位添加'\0’
所以在统计char c[]={'c','h','i','n','a'}时,统计到a时,系统还没找到\0,所以会继续统计,直到找到'\0'为止。所以就有你第三个值为11的情况,这个根据不同的运行环境而定。