当前位置: 代码迷 >> C语言 >> 字符串长度问题
  详细解决方案

字符串长度问题

热度:282   发布时间:2005-03-15 17:09:00.0
字符串长度问题
小弟遇到一个有关求字符串长度的难题:
1)printf("%d\n",strlen("s\n\016\0end"));其结果是:3
2)printf("%d\n",strlen("s\n\01"));其结果是:3
3)printf("%d\n",strlen("s\n\0"));其结果是:2
4)printf("%d\n",strlen("s\n")):其结果是:2
对于以上四种情况,小弟有几个问题始终搞不明白:

一是字符串的结束符'\0'算不算字符串长度?
二是为什么"s\n\01"的长度为3,而"s\n\0"的长度却为2,按理说遇到'\0',字符串应结束,那么这两个字符串的长度应该一样?
三是"s\n\0" 与"s\n"的有没有区别,什么其长度是一样的?

急求各位GGJJMMDD的帮助?
搜索更多相关的解决方案: quot  字符  长度  printf  strlen  

----------------解决方案--------------------------------------------------------
看了下  具体是什么我不知道   但我有一点猜想
有可能'\01'  也是一个转意字符
同里'\016'也可能是一个转意字符
等高手来解决吧  看我的猜想对不对
----------------解决方案--------------------------------------------------------
还没学到这,加油。
----------------解决方案--------------------------------------------------------
\0 :是字符串的结束符它是不算长度的。
\01 :虽然和 \0 很相似,但它是一个八进制的转意字符,以0开头后面跟数字的是八进制,象你第一个输出的最后一个也有 \0end 但他后面跟的是字母了,这样就是字符串结束符了。
s\n\0 和 s\n : 这两个当然是有区别的,你象假如我们要用循环对字符串进行操作时,我们就可以用 \0 来做为循环的判断条件了。

不知道是否完全正确,请指正!!
----------------解决方案--------------------------------------------------------
谢谢 楼上的几位大虾的指点,小弟有点明白了。多谢多谢!
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
C语言的细节的东西就是多啊!!!!
----------------解决方案--------------------------------------------------------
以下是引用lsqing在2005-3-15 17:09:00的发言:
小弟遇到一个有关求字符串长度的难题:
1)printf("%d\n",strlen("s\n\016\0end"));其结果是:3
2)printf("%d\n",strlen("s\n\01"));其结果是:3
3)printf("%d\n",strlen("s\n\0"));其结果是:2
4)printf("%d\n",strlen("s\n")):其结果是:2
对于以上四种情况,小弟有几个问题始终搞不明白:

一是字符串的结束符'\0'算不算字符串长度?
二是为什么"s\n\01"的长度为3,而"s\n\0"的长度却为2,按理说遇到'\0',字符串应结束,那么这两个字符串的长度应该一样?
三是"s\n\0" 与"s\n"的有没有区别,什么其长度是一样的?

急求各位GGJJMMDD的帮助?

1.\016表示8进制数,算一个字符,当碰到\0时,此时字符串结束,之后的"end"不被记录在其中.
2.同理\01表示一个字符
3.\0结束
4....不用说了

"s\n\0"和"s\n"本质上没有区别.字符串会自动在最后补加一个'\0';
----------------解决方案--------------------------------------------------------

  相关解决方案