A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>
/*
(不包括\0)编写一个int string_len(char *s),返回字符串s的字符长度
*/
int string_len(char *s);

int main()
{
    //char *name = "itcast";
   
   // 男 \u434\u4343\u434
   
    int size = string_len("tre777");
   
    printf("%d\n", size);
    return 0;
}

int string_len(char *s)
{
    // 1.定义一个新的指针变量指向首字符
    char *p = s;
   
    /*
    while ( *s != '\0' )
    {
        s++;
    }*/
   
    while ( *s++ ) ;
   
    return s - p - 1;
}
找了找视频,正好讲这个习题的视频没有,代码中其它两种方法都理解,就是这个返回值 s-p-1,这个还没搞懂什么意思。舍不得黑马币去悬赏,所以在这交流下,有哪位学长能指教下吗?

3 个回复

倒序浏览
s++走到了\0位置, p是初始位置,s-p= 字符串的长度,包括\0。strlen不包含\0所以再 -1.
回复 使用道具 举报
多看看 多敲敲代码
回复 使用道具 举报
kim55666 发表于 2015-4-6 21:02
s++走到了\0位置, p是初始位置,s-p= 字符串的长度,包括\0。strlen不包含\0所以再 -1. ...

哦哦哦。原来如此,非常感谢,一直没搞明白这个!:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马