| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7514 人关注过本帖
标题:写两个字符串比较是否相等的函数,相等返回1,不等返回0.不能用库函数
只看楼主 加入收藏
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
[bo]以下是引用 [un]yxwsbobo[/un] 在 2008-3-12 01:20 的发言:[/bo]

ls忘记判断第一个字符了
经过提示,改成这样,应该最简了


int bijiao(char *a,char *b)
{
while(*a||*b)
{
if(*a++!=*b++)
return 0;
return 1;
}
 


while(*a||*b)      //这里用“或”的写法是有问题的,将可能导致越界访问。
只不过比较运气的是,在这里刚好不会出错。为什么呢,因为假设两个不同长度的字符串,假设a的长度小于b,那么在a的结尾处,b还没有结束,这时*a=0,*b!=0,刚好返回了,不会进行下一次循环。

[[it] 本帖最后由 hoodlum1980 于 2008-3-14 13:51 编辑 [/it]]
2008-03-14 13:48
skrot
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2008-2-16
收藏
得分:0 
[bo]以下是引用 [un]hoodlum1980[/un] 在 2008-3-14 01:48 PM 的发言:[/bo]



while(*a||*b)      //这里用“或”的写法是有问题的,将可能导致越界访问。
只不过比较运气的是,在这里刚好不会出错。为什么呢,因为假设两个不同长度的字符串,假设a的长度小于b,那么在a的结尾处,b还没有结束,这时*a=0,*b! ...


不明白,既然*a=0,*b!=0;那么*a||*b应该按一真即真得值为真,即1。那么应该是继续循环,怎么成结束循环了?

心中明了路向何方,前路自有一番风光。
     skroty@.cn
2008-03-19 00:01
shilei525918
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-1-2
收藏
得分:0 
还是2楼的好呀,简单实用
2008-03-20 13:49
快速回复:写两个字符串比较是否相等的函数,相等返回1,不等返回0.不能用库函数
数据加载中...
 
   



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

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