[DS-C] 瞎聊strlen

9 views
Skip to first unread message

lemonash

unread,
May 5, 2010, 3:36:13 AM5/5/10
to ds-c-i...@googlegroups.com
网上看到的定义:strlen的计算必须依赖字符序列中的’\0’字符,strlen 就是通过判断是否遇到’\0’来判断字符序列是否结束的。
它的计算原理类似于下面的两条语句
while(*p!=’\0’)
    length++


问题:
    char str[10];
    //printf("&str = %x\n", str);
    printf("strlen(str) = %d, sizeof(str) = %d\n", strlen(str), sizeof(str));  //此处strlen(str)=13

    printf("str[12] = %d\n", str[12]);  //此处结果为一个非’\0’的值  我的环境中为35

既然strlen 是通过判断是否遇到’\0’来判断,上面str[12]中并不为’\0’,为什么strlen(str)为13?

望高人解惑!谢谢!

lemonash

unread,
May 5, 2010, 3:52:23 AM5/5/10
to ds-c-i...@googlegroups.com
再仔细看了下 str[13]为’\0’ !
不好意思...

bin wang

unread,
May 5, 2010, 5:48:56 AM5/5/10
to ds-c-i...@googlegroups.com
char str[10];?
str[13]?
谁知到str[13]里是什么

xiao_m...@163.com

unread,
May 5, 2010, 6:14:21 AM5/5/10
to ds-c-i...@googlegroups.com

Emacs Ubuntu

unread,
May 5, 2010, 7:20:16 AM5/5/10
to ds-c-i...@googlegroups.com
那个天知道是什么值呢,都越界了!

2010/5/5 <xiao_m...@163.com>:

--
Impossible is nothing!

xepher

unread,
May 5, 2010, 9:43:35 PM5/5/10
to ds-c-i...@googlegroups.com
同上
Reply all
Reply to author
Forward
0 new messages