打印

strlen的疑惑

[复制链接]
869|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wdliming|  楼主 | 2012-7-17 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wdliming 于 2012-7-21 12:28 编辑

#include <stdio.h>
#include <string.h>

int main(void)
{
    char a[1000];
    int i;
    for (i=0; i<1000; i++)
    {
        a = -1-i;
    }
    printf("%d\n",strlen(a));
   
    return 0;
}
改了一下代码。。100应该是1000的
这段代码执行后的结果实255

请问为什么 啊?谢谢!

相关帖子

沙发
aozima| | 2012-7-17 19:13 | 只看该作者
楼主去查strlen如何判断字符串结束?

使用特权

评论回复
板凳
shell.albert| | 2012-7-18 16:45 | 只看该作者
strlen()函数用于计算非零字符串的长度,从下标0开始,一直统计到终止符 ’\0'
你得到的这个数肯定是在255-1=254,即a[254]这个元素为0.
建议你使用
printf("%d\n",a[254]),将值打印出来看一下。

使用特权

评论回复
地板
wdliming|  楼主 | 2012-7-18 18:50 | 只看该作者
3# shell.albert
哦,谢谢你!哈哈不错

使用特权

评论回复
5
wdliming|  楼主 | 2012-7-19 09:12 | 只看该作者
3# shell.albert
gdb了一下是,在a[255]=0的

使用特权

评论回复
6
原野之狼| | 2012-7-19 09:42 | 只看该作者
a = -1-i;
这个怎么解释?

使用特权

评论回复
7
sinonion| | 2012-7-20 11:19 | 只看该作者
for (i=0; i<1000; i++)
    {
        a = -1-i;
    }


??a是哪来的,楼主你想做什么?

使用特权

评论回复
8
wdliming|  楼主 | 2012-7-21 12:29 | 只看该作者
本帖最后由 wdliming 于 2012-7-21 12:30 编辑

7# sinonion
哦,是a【i】 = -1-i;哈哈疏忽啊,网页里数组a不能很好的显示。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我的未来不是梦

76

主题

913

帖子

4

粉丝