当前位置: 代码迷 >> C语言 >> 写两个字符串比较是否相等的函数,相等返回1,不等返回0.不能用库函数
  详细解决方案

写两个字符串比较是否相等的函数,相等返回1,不等返回0.不能用库函数

热度:66   发布时间:2008-03-14 13:48:28.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]]
----------------解决方案--------------------------------------------------------
[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。那么应该是继续循环,怎么成结束循环了?
----------------解决方案--------------------------------------------------------
还是2楼的好呀,简单实用
----------------解决方案--------------------------------------------------------
  相关解决方案