trybye
2017-12-04 12:25
采纳率: 23%
浏览 1.6k
已采纳

c语言关于字符串长度的问题

char ss[5]="hello";
printf("len:%d\n",strlen(ss));

为什么得到的len是6呢???

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 战在春秋 2017-12-04 12:52
    已采纳

    题目中的代码应该会报错.
    C语言中隐含用字符 '\0' 标志字符串常量的结束,因此需要定义长度为6的字符数组。
    即:

      char ss[6] = "hello";
        printf("len:%d\n", strlen(ss));  //输出为len:5 
    

    strlen函数在计算长度时不包含结束字符,所以len应为5.

    如果对您有帮助,请点击采纳答案好吗,谢谢~~

    已采纳该答案
    2 打赏 评论
  • 逆风飞翔的菜鸟 2017-12-04 12:51

    C语言的字符串还有字符串结束符号,‘/0’又叫空字符。

    打赏 评论
  • 陈壮 2017-12-04 12:52

    在用数组保存字符串时,会默认在后面下/0(ascii 码的值为0的字符),如果数组的长度不够时则不会在后面存储,strlen函数内部实现会从头一直往后
    找直到到/0,截止,不包括/0,你的代码strlen函数会出现发生越界的情况。

    打赏 评论
  • qq_36058112 2017-12-04 13:28

    还要加上一个“/0”

    打赏 评论
  • 不废话快上车 2017-12-04 13:56

    图片说明
    要考虑到隐藏字符'\0'
    图片说明

    打赏 评论
  • jhb8698lol 2017-12-04 17:38

    都是正解………lol

    打赏 评论

相关推荐 更多相似问题