[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;
}
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]]