标题:求助:strlen()问题
取消只看楼主
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
 问题点数:0 回复次数:6 
求助:strlen()问题
#include <stdio.h>
#include <string.h>
main()
{
int i=1;
printf("%d",strlen(&i));
}

在Tc上运行,结果显示1,没错~
当把i=1改为i=257的时候,结果显示7;
但int在我机子的内存上只占四个字节,为什么显示7呢?
我预想的结果是2;
请大家给点提示,谢谢!!!
搜索更多相关主题的帖子: strlen 
2007-10-26 15:15
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
怎么没人回答哦
2007-10-26 22:27
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
回复:(succubus)strlen不能这样用啊。。。

嗯,tc中,int只支持两个字节

2007-10-26 23:04
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
回复:(lonelyfree)怎么没人回答哦[em09]
今天我们老师讲了,strlen可以这样用,只要参数跟指针就行了。
strlen访问指针指向的地址,然后向下读,遇到'\0'结束,也就是遇到00000000结束。
2007-10-26 23:07
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
回复:(succubus)以下是引用lonelyfree在2007-10-26...

我只是想检验一下strlen是怎么样工作的,
可是我想的跟做出来的不一样。
我想知道问题出在哪里?

2007-10-26 23:17
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
lonelyfree
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-10-13
得分:0 
回复:(succubus)以下是引用lonelyfree在2007-10-26...
呵呵,虽然还有一点不清楚,但还是谢谢你们的提示!~~
2007-10-26 23:52



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




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

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