C语言的字符串是由字符数组形式保存的,并约定'\0'(ascii码值为0)作为字符串结束符。
公司主营业务:网站制作、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出松原免费做网站回馈大家。
其长度为从字符串开始,到'\0'结束,所有字符的个数,不包括'\0'本身。
要获得字符串长度,有两种方法可以使用:
1
使用库函数strlen()。
strlen声明在string.h中,原型为
int
strlen(char
*str);
功能为求str的长度,并返回。
2
根据定义求长度。
对于字符串str,
可以用如下代码求长度:
int
len;
for(len
=
0;
;
len
++)
if(str[len]
==
'\0')break;
当str[len]为0时,退出循环,退出后的len值就是str的长度。
根据查找到字符串中
'\0'字符的位置结束.
'\0'
前面的个数为该字符串长度
比如
"hello
world!"
字符串长度为12
(字符串存储时结尾自动加上\0字符)
如果这样写
"hello
\0world!"
字符串长度为6
(空格也算一个字符)
C语言计算字符串长度,可以手动计算也可以使用库函数或者sizeof()操作符。
方法:
自定义函数求长度
使用strlen()函数
使用sizeof()操作符
自定义函数:
int cont_str(char *s)
{
int i = 0;
while ( str[i++] != '\0') ;
return i;
}
使用string头文件中的strlen()函数:
strlen(str); //假设str为待求的字符串数组名
使用sizeof()操作符:
sizeof(str)/sizeof(str[0]); //假设str为待求的字符串数组名
注意:
strlen()函数求出的字符串长度为有效长度,既不包含字符串末尾结束符 ‘\0’;
sizeof()操作符求出的长度包含字符串末尾的结束符 ‘\0’;
当在函数内部使用sizeof()求解由函数的形参传入的字符数组的长度时,得到的结果为指针的长度,既对应变量的字节数,而不是字符串的长度,此处一定要小心。
正确的答案是5,题目选项有误。
首先strlen()函数返回的长度是不包含'\0',
第一个字符为:a
第二个字符为:b
第三个字符为:\n (换行符)
第四个字符为:2
第五个字符为:\ (\\转义为\)
所以答案为5。
(下图为实际代码演示)
扩展内容:
strlen()函数(C语言函数):
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
参考资料:strlen函数 - 百科
使用string库函数里的strlen函数即可判断字符长度。
strlen函数可以计算给定字符串的长度,返回值为长度值。
例如计算字符串“helloworld2017”的长度的代码:
#includestdio.h
#includestring.h
int main()
{
int i;
i = strlen("helloworld2017");
printf("%d",i);
}运行结果如下:
第1个输出是8
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个问题一样。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款