急!!!!strlen函数问题

豆包啊啊 2008-12-16 08:50:26
char a[100];
cout << strlen(a) << endl;
输出结果是:
100
103

char a[10];
cout << strlen(a) << endl;
输出结果是:
10
15

为什么一个是103,一个是15啊?而且把10换成11,12,输出结果也都是15。谁能告诉我为什么?
...全文
86 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
nullah 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ztz0223 的回复:]

strlen不能用在刚定义的字符串数组上面的,因为strlen要找'\0',而你刚定义的里面没有这个字符,或许有
因此得到的是随机的一个数字
[/Quote]
up 正解
bluejing0 2008-12-16
  • 打赏
  • 举报
回复
楼上已解答,乱UP
whsfer 2008-12-16
  • 打赏
  • 举报
回复
是不是成员对齐的问题呢?
lbh2001 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fjqgx 的回复:]
我主要是想知道为什么a[10],a[11],a[12],strlen(a)结果都是15,就是因为遇到\0才停,所以长度不确定,对吧?
[/Quote]

怀疑你认真看回复没有,局部数组不初始化,里面的值是随机的,你那知道它在什么位置上是'\0',有可能在第二个位置,也有可能在其长度范围外的什么位置
在你的机器上结果是15,在别的机器上结果可能是其他值,因为不初始化'\0'的位置是随机值
GreaterHeat 2008-12-16
  • 打赏
  • 举报
回复
初次见到这样用strlen()的.
建议所有的变量都首先初始化候再使用.
变量定义之后马上就赋值的是另外一种用法.
豆包啊啊 2008-12-16
  • 打赏
  • 举报
回复
我主要是想知道为什么a[10],a[11],a[12],strlen(a)结果都是15,就是因为遇到\0才停,所以长度不确定,对吧?
长安宁 2008-12-16
  • 打赏
  • 举报
回复
你要知道,strlen的时候,只有遇到\0才会停,所以结果...
lbh2001 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fjqgx 的回复:]
问题就是不初始化,初始化以后我就能弄明白了。
[/Quote]
如果是全局的数组,你不初始化是没有问题的,因为编译器会帮你初始化
但如果是局部数组,你不初始化,数组内的值是随机的,而strlen是依靠'\0'为结束符计算的
结果你应该明白了吧
豆包啊啊 2008-12-16
  • 打赏
  • 举报
回复
问题就是不初始化,初始化以后我就能弄明白了。
就呆在云上 2008-12-16
  • 打赏
  • 举报
回复

strlen不能用在刚定义的字符串数组上面的,因为strlen要找'\0',而你刚定义的里面没有这个字符,或许有
因此得到的是随机的一个数字
豆包啊啊 2008-12-16
  • 打赏
  • 举报
回复
我知道sizeof怎么用,就是问strlen的用法。
bxhzct 2008-12-16
  • 打赏
  • 举报
回复
sizeof();
gql1123 2008-12-16
  • 打赏
  • 举报
回复
数组a没赋值,也没初始化,输出长度不确定。
android2008 2008-12-16
  • 打赏
  • 举报
回复
友情up
qap22 2008-12-16
  • 打赏
  • 举报
回复
友情up
lbh2001 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 fjqgx 的帖子:]
char a[100];
cout < < strlen(a) < < endl;
输出结果是:
100
103

char a[10];
cout < < strlen(a) < < endl;
输出结果是:
10
15

为什么一个是103,一个是15啊?而且把10换成11,12,输出结果也都是15。谁能告诉我为什么?
[/Quote]

兄弟,你先将字符数组初始化先,在计算其中的字符串长度

char a[100] = "asfsa";
cout << strlen(a) << endl;
如果你要输出数组长度,就要使用
cout << sizeof(a) << endl; //不是用strlen
android2008 2008-12-16
  • 打赏
  • 举报
回复
友情up
qap22 2008-12-16
  • 打赏
  • 举报
回复
友情up

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧