| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 339 人关注过本帖
标题:关于strlen()
收藏  订阅  推荐  打印 
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6
关于strlen()

本人有些概念搞不清楚,做了个小的测试,程序如下:
#include <iostream>
using namespace std;

int main()
{
    const char *s="China!";
    char arr[6]={'C','h','i','n','a','!'};
    cout << strlen(s) << endl;          //output:6
    cout << strlen("China!") << endl;   //output:6

    cout << strlen(arr) << endl;     // output : 11
     
    return 0;
}

如果把char arr[6]={'C','h','i','n','a','!'};改为char arr[6]={'C','h','i','n','a'};那么长度就是5了,哪位能解释一下,这是为什么?为什么就多了一个数组元素,长度就增加了那么多?
哪位知道的,希望能帮我字符串指针,数组名, 字符串的长度的概念给我澄清一下,,谢谢!
搜索更多相关主题的帖子: strlen  
2008-9-13 15:42
ma3587
Rank: 1
等级:新手上路
帖子:26
积分:374
注册:2008-6-17

而strlen函数是查找到字符串结束字符‘\0‘结束,所以strlen(ch)有可能等于任何值,这取决于你的编译器。
2008-9-13 16:17
blueboy82006
Rank: 12Rank: 12Rank: 12
来自:幻想世界
等级:版主
威望:16
帖子:1212
积分:12084
注册:2007-7-23

你试一下这几句:
char arr[7]={'C','h','i','n','a','!'};
char arr[7]={'C','h','i','n','a','!','!'};
char arr[8]={'C','h','i','n','a','!','!','!'};

有意思...

闭关修炼中!......
2008-9-13 17:08
zzt_428
Rank: 2
来自:南京师范大学
等级:注册会员
威望:1
帖子:156
积分:1740
注册:2008-7-6

谢谢楼上的,明白了!呵呵呵呵
2008-9-13 17:27
newyj
Rank: 4
等级:高级会员
威望:2
帖子:525
积分:6228
注册:2008-1-4

strlen是c类型的 所以要检查'\0'
而char arr[6]={'C','h','i','n','a','!'};没有提供'\0'所以并不能取得比较确切的值
因为 它要在找那个'\0'
2008-9-13 19:56
liotta
Rank: 1
等级:新手上路
帖子:13
积分:238
注册:2008-8-29

数组arr没有添加'\0',不能使用string类函数,结果未知!
属常现错误。
2008-9-13 20:19
kevin88
Rank: 1
等级:新手上路
威望:1
帖子:21
积分:328
注册:2008-9-18
回复 3# blueboy82006 的帖子

是数组长度太短了吧
2008-10-2 02:13
守鹤
Rank: 12Rank: 12Rank: 12
来自:山東臨沂
等级:版主
威望:11
帖子:312
积分:3474
注册:2008-6-20

注意字符数组与字符串数组的区别,

strlen()是处理字符串的函数

知者知也,不知者不知也!
携手走夕阳待何时?
2008-10-2 12:39
kevin88
Rank: 1
等级:新手上路
威望:1
帖子:21
积分:328
注册:2008-9-18

char arr[6]={'C','h','i','n','a','!'};
好像放不下/0了
2008-10-2 18:58
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.060633 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved