当前位置: 代码迷 >> C语言 >> 求助:strlen()问题
  详细解决方案

求助:strlen()问题

热度:509   发布时间:2007-10-26 23:27:24.0
你要想得到2的结果就用int占四字节的编译器吧
比如VC
----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------
以下是引用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个字节内存里有其他数据呢?
----------------解决方案--------------------------------------------------------

以下是引用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!


----------------解决方案--------------------------------------------------------
回复:(succubus)以下是引用lonelyfree在2007-10-26...
呵呵,虽然还有一点不清楚,但还是谢谢你们的提示!~~
----------------解决方案--------------------------------------------------------
以下是引用aoaoaoao在2007-10-26 22:53:50的发言:

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

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


----------------解决方案--------------------------------------------------------
  相关解决方案