| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:问一个关于strlen的问题
只看楼主 加入收藏
林梦
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2011-6-10
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:5 
问一个关于strlen的问题
#include<stdio.h>
#include"string.h"
int main()
{
    char a[100];
    int i;
    for(i=0;i<100;i++)
    {
    a[i]=-1-i;
    }
    printf("%d",strlen(a));
    return 0;
}
给位大侠,俺这段程序运行的结果是103,可是,按俺的理解,结果貌似应该为100吧,请讲解,谢谢。
搜索更多相关主题的帖子: include 
2011-12-02 21:39
馨梦惜夕
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:54
专家分:190
注 册:2011-5-18
收藏
得分:0 
a[i]=-1-i; 产生的是负值,字符的ASCII值没有负的!! 所以会出现错误!!
2011-12-02 21:47
yacopo
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2011-12-2
收藏
得分:0 
a[i]=-1-i;
改成 1+i 就ok了。
2011-12-02 21:51
林梦
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2011-6-10
收藏
得分:0 
哥们,程序没有错误吧,你们自己调试一下试试。我说的是,结果与自己想象的不同。谢谢。
2011-12-02 21:53
yacopo
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2011-12-2
收藏
得分:5 
回复 4楼 林梦
你用strlen 函数的时候,
返回的是 array当中'\0'的地址和 array 开头地址的差。
你在array中写入不属于在ascii 中的字符,系统很有可能就是什么也不做,
但是程序继续运行,当然内存不会是空的里面总有些东西,当检测到类似于 \0 东西时候就返回了。
当然你不知道 \0 在什么位置,所以你也不会知道你最后会得到是什么结果,和预期的极有可能不一样。
2011-12-02 22:22
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:0 
你在字符数组中输入了不合法的东西,所以答案不能预期。

最基础的往往是你最容易忽略的!
2011-12-02 23:00
快速回复:问一个关于strlen的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025978 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved