标题:求助:关于strlen()和sizeof()的问题
只看楼主
hrp313
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-8-23
 问题点数:0 回复次数:3 
求助:关于strlen()和sizeof()的问题

//Question1
#include <stdio.h>
#include <string.h>

void main()
{
int x = 35;
char str[10];

printf("x = %d,strlen(str)=%d,sizeof(str)=%d\n",x,strlen(str),sizeof(str));
}
此时输出 x = 35,strlen(str)=13,sizeof(str)=10 对strlen(str)=13不解
如果把前两行调个位结果又不一样如下:
//Question2
#include <stdio.h>
#include <string.h>

void main()
{
char str[10];
int x = 35;

printf("x = %d,strlen(str)=%d,sizeof(str)=%d\n",x,strlen(str),sizeof(str));
}
这时输出 x = 35,strlen(str)=15,sizeof(str)=10 对strlen(str)=13
这个更不可思议了
//Question 3
#include <stdio.h>
#include <string.h>

void main()
{
int x = 35;
char str[10];

strcpy(str,"www.it315.org"/*共13个字母*/);

printf("x = %d,strlen(str)=%d,sizeof(str)=%d\n",x,strlen(str),sizeof(str));
}
此时输出x = 103,strlen(str)=13,sizeof(str)=10 对x的值不可思议
//Question4
void main()
{
char str[10];
int x = 35;

strcpy(str,"www.it315.org"/*共13个字母*/);

printf("x = %d,strlen(str)=%d,sizeof(str)=%d\n",x,strlen(str),sizeof(str));
}
此时编译无错,但执行出错,但还是能输出x = 35,strlen(str)=13,sizeof(str)=10
所有这些都不太明白,请高手指点,感激不尽!

搜索更多相关主题的帖子: str sizeof include void int 
2006-08-24 00:08
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
得分:0 

看一下 strlen 的參數,
size_t strlen(const char * string);
string: Null-terminated string.
你的 str 的 Null-terminated char 在哪裏, 這個 13 不是固定的.... strlen 在遇到一個 0 時返回.

2 同上.

3.strcpy 改寫了 x 的內容, 這與 strcpy 的操作有關, 並且與在函數中定義變數的順序有關 (棧分配)
4. 同上.


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-24 00:47
lullaby
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-4-22
得分:0 

很简单

堆栈溢出了

2007-04-28 23:36
边城路人
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:591
专家分:0
注 册:2007-3-8
得分:0 
这个问题那么久了
还在讨论阿

当你开始怀疑自己时,说明你已经失去了判断力
2007-04-29 07:47



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




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

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