游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8863|回复: 32

刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

[复制链接]

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2006-1-22 15:05:00 | 显示全部楼层 |阅读模式

void main()
{

       char a[64];

        cout<<strlen(ziti)<<'\n'<<endl;

}



cout输出的答案让人大跌眼镜是: 67

一个定义了64个字符的字符数组,用str求它的长度,答案居然是67。是不是太搞笑了,呵呵!不信各位也可以试试。




   




248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2006-1-22 15:20:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

??????

8

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2006-1-22 16:21:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

应该用sizeof而不是strlen
不是bug
我想一个程序员正确的态度是只怀疑自己,而不是怀疑别人。

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2006-1-22 16:45:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

严重同意楼上的!

strlen是求以"\0"为结束符的字符串长度!

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2006-1-22 18:47:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

strlen()函数的用途是求字符串的长度(不包括‘\0’)的长度,所以用来求字符串char a[64]的长度有什么不对吗?

char a[64]是典型的字符串,用strlen函数显示长度应该是64啊!不是Bug是什么,微软的东西就是以Bug多出名。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2006-1-22 19:02:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

呵呵,你有对这64字节的栈内存赋值么?如果没有又从何得知这块内存中的字符串长64字节?

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2006-1-22 19:07:00 | 显示全部楼层

Re: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

轰隆隆: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

strlen()函数的用途是求字符串的长度(不包括‘\0’)的长度,所以用来求字符串char a[64]的长度有什么不对吗...


strlen()求的是以NULL为结束的字符串长度. 而char a[64]是个数组,sizeof它的话是64字节,但用strlen来求长度的话,视数组里的值而定.

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-1-22 19:25:00 | 显示全部楼层

Re: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

轰隆隆: Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

strlen()函数的用途是求字符串的长度(不包括‘\0’)的长度,所以用来求字符串char a[64]的长度有什么不对吗...

strlen是得到到'\0'的长度,如果内存中没有'\0',可能你得到的不只是67,甚至死循环

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2006-1-22 19:47:00 | 显示全部楼层

Re: 刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

轰隆隆: 刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。


void main()
{

       char a[64];

        cout<<strlen(ziti)<<'\n'<<endl;
...


??的人就??出一??大bug =.=
?念^到尾?]看到 ziti是什??|西
如果要求 a 的字串?度是 strlen(a);

而且你必?要在 a?面先?[?料
strcpy(a,"This is Test");
strlen(a);



85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2006-1-22 22:13:00 | 显示全部楼层

Re:刚刚发现VC6.0 的一个大Bug,不知大家遇到过没有。

基础啊~~
楼主要复习一下c++的临时变量这一节
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 10:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表