c语言,菜鸟级别问题。用sizeof(),比较两个字符串长度。错在哪里,大神帮忙改正一下

[复制链接]
查看11 | 回复2 | 2011-6-13 04:21:36 | 显示全部楼层 |阅读模式
/*比较两个字符串长度。然后输出长的那一个*/
#includestdio.h
char*fun(chara[],charb[]);

voidmain()
{
chara[100],b[100],*c;
printf(\"pleaseinputtwostringchracters:\\n\");
scanf(\"%s\",a);//输入a字符串
printf(\"\\n\");
scanf(\"%s\",b);//输入b字符串
c=fun(a,b);//用c接收长字符串地址
printf(\"thelongerstringis:\\n%s\",c);//打印出长的字符串
}

char*fun(chara[],charb[])//比较长度的函数
{
char*c;
if(sizeof(a)sizeof(b))//长的字符串地址,赋值给c
{c=a;}
elseif(sizeof(a)sizeof(b))
{c=b;}
else{printf(\"thetwostringisthesamelongth!\\n\");}//一样长输出这个
returnc;//把长的字符串地址返回
}
回复

使用道具 举报

千问 | 2011-6-13 04:21:36 | 显示全部楼层
if(sizeof(a)sizeof(b))//长的字符串地址,赋值给c

这里用sizeof只是算出的指针的长度.应该用strlen









<h4class=\"ask\">追问


就算是算出的是指针长度,为什么程序运行会有错误呢。。应该可以正常运行,只是结果都是一样的,才对埃。这个程序运行到最后,就弹出警告的对话框,这是怎么回事呀。大侠。
回复

使用道具 举报

千问 | 2011-6-13 04:21:36 | 显示全部楼层
弹出什么出错内容?

char*fun(chara[],charb[])//比较长度的函数
这个函数里没判断两个值相等的情况.
不过具体问题等我测试下回答你啊

===========
经过我测试,你弹出的警告框应该是由于你函数fun里没有在两个字符串长度相等的时候给返回值c赋值,导致返回了一个不知道指到什么地方的指针.所以你这个函数有两个地方要改
1加头函数string.h并且把所有的sizeof换成strlen
2把else{printf(\"thetwostringisthesamelongth!\\n\");}改成
else{
printf(\"thetwostringisthesamelongth!\\n\");
returnNULL;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行