十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
int strlenOwn(const char* psz) /*const使得字符数组不被修改*/
成都创新互联公司是一家集网站建设,江城企业网站建设,江城品牌网站建设,网站定制,江城网站建设报价,网络营销,网络优化,江城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
{
int len=0;
while( *(psz++) ) //psz加啊加啊最后指到了字符串的最后一个的后面,检测到了"\0"
len++; //(接上)于是乎while检测为false(即检测到0),字符串长len就算出来了
return len;
}
这里面psz++是指针的位移操作,移动指向位置的,字符串常量对于c语言来说就是一种数组嘛
而括号外面的“ * ”是解引用符号,其实意思就是取指针当前位置的值,而不是它的地址。
方法一:数组方式
代码如下:
lt;span style="font-size:18px;"gt;#includelt;stdio.hgt;
#includelt;assert.hgt;
int my_strlen(char const*str)
{
int count=0;
assert(str);//断言,判断指针的有效性
while(*str++!=NULL)
{
count++;
}
return count;
}
int main()
{
char arr[30]="trouble is a friend.";
printf("%d\n",my_strlen(arr));
getchar();
return 0;
}lt;/spangt;
运行结果:
方法二:指针方式
说明:当两个指针都指向同一个数组中的元素,指针减指针就是指针与指针之间元素的个数;两个地址相加没有实际意义。
代码如下:
lt;span style="font-size:18px;"gt;#includelt;stdio.hgt;
int my_strlen(char const*str)
{
char const*tmp=str;
while(*str!='\0')
{
str++;
}
return str-tmp;
}
int main()
{
char arr[30]="trouble is a friend.";
printf("%d\n",my_strlen(arr));
getchar();
return 0;
}lt;/spangt;
正确的答案是5,题目选项有误。
首先strlen()函数返回的长度是不包含'\0',
第一个字符为:a
第二个字符为:b
第三个字符为:\n (换行符)
第四个字符为:2
第五个字符为:\ (\\转义为\)
所以答案为5。
(下图为实际代码演示)
扩展内容:
strlen()函数(C语言函数):
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
参考资料:strlen函数 - 百科
getchar()函数的原型是 int getchar( void )
返回值是整型的
功能是:从标准输入中读取一个字符,也就是键盘敲击字符,只接收单个字符
可以用gets()函数来接收多个字符
这里的 s 接收的是该字符的ASCII码,非长度。
如果从原基础上改可以这样
int i;
char s[20]; /*字符串需要长度*/
gets( s );
i = num( s );
int num( char *s ) /* 这里的指针 ,后面学得到*/
{
}
套上去就可以了
c语言中获得一个字符串长度的函数是:strlen(),举例如下:
#includestdio.h
#includestring.h
main()
(
char *str="this is a test msg";
printf("%d\n",strlen(str));
getch();
)