标题:求助:strlen()问题
只看楼主
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
你要想得到2的结果就用int占四字节的编译器吧
比如VC

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-26 23:27
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
以下是引用yangzhifu在2007-10-26 23:26:13的发言:

如果你想这么用也可以,而且你的答案是对的:
具体要看系统是大端与小端的问题,看看下面:http://bbs.bc-cn.net/viewthread.php?tid=179519&star=at#

关键是tc的int是两字节,所以出错
就相当于下面这段代码一样
char country[5]={'c','h','i','n','a'};
strlen(country);

[此贴子已经被作者于2007-10-26 23:31:21编辑过]


[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-26 23:30
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
以下是引用succubus在2007-10-26 23:20:52的发言:
问题出在哪里见你自己回帖的6楼
想检验strlen是怎么工作的就请用字符串来验证

谢谢你的提示,我先没有检验大小端的影响。
我刚才又试了一下:
#include <stdio.h>
main()
{
int i[2]={257,0};
printf("%d",strlen(i));
}
这里输出是2

#include <stdio.h>
main()
{
int i=257;
printf("%d",strlen(&i));
}
这里输出是7

是不是第二段代码i=257,257两个字节后面的5个字节内存里有其他数据呢?

2007-10-26 23:38
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
得分:0 
以下是引用lonelyfree在2007-10-26 23:38:51的发言:

谢谢你的提示,我先没有检验大小端的影响。
我刚才又试了一下:
#include <stdio.h>
main()
{
int i[2]={257,0};
printf("%d",strlen(i));
}
这里输出是2

#include <stdio.h>
main()
{
int i=257;
printf("%d",strlen(&i));
}
这里输出是7

是不是第二段代码i=257,257两个字节后面的5个字节内存里有其他数据呢?

you got it!


[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-10-26 23:44
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
回复:(succubus)以下是引用lonelyfree在2007-10-26...
呵呵,虽然还有一点不清楚,但还是谢谢你们的提示!~~
2007-10-26 23:52
giant611
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-25
得分:0 
以下是引用aoaoaoao在2007-10-26 22:53:50的发言:

tc支持的 int是 2个字节把 ...不是4个字节.

对,tc支持int就2个字节,vc6.0才是4个

2007-10-27 14:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-180978-1-1.html




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

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