思路:因为字符串都是以'\0'作为结束标志,所以可以从字符串的第一个位置开始遍历,直到出现'\0'停止遍历,并每次下标后移,字符串的长度加1,最后返回字符串长度。
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的茫崖网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
参考代码:
#include "stdio.h"
int strlen(char *s){//求字符串长度函数
int n;
for(n=0;s[n]!='\0';n++);
return n;
}
int main() {
char a[100];
gets(a);
printf("%d\n",strlen(a));
return 0;
}
/*
运行结果:
wqerqew
7
*/
正确的答案是5,题目选项有误。
首先strlen()函数返回的长度是不包含'\0',
第一个字符为:a
第二个字符为:b
第三个字符为:\n (换行符)
第四个字符为:2
第五个字符为:\ (\\转义为\)
所以答案为5。
(下图为实际代码演示)
扩展内容:
strlen()函数(C语言函数):
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
参考资料:strlen函数 - 百科
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()求解由函数的形参传入的字符数组的长度时,得到的结果为指针的长度,既对应变量的字节数,而不是字符串的长度,此处一定要小心。
C语言中字符串长度的函数是strlen(),一个字符的长度为1;
函数原型:
unsigned int strlen (char *s);头文件:
#include string.h参数说明:s为指定的字符串;
功能说明:strlen()用来计算指定的字符串s 的长度,不包括结束字符'\0';
返回值:返回字符串s 的字符数;
注意:strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。
示例:
#includestdio.h#includestring.hint main(){ char str[] = "ab\nxyz";//\n为回车字符,占一个字节 printf("strlen(str)=%d\n", strlen(str)); return 0;}//输出结果:strlen(str)=6 收起
第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小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款