gpt4 book ai didi

c - 字符串比较逻辑错误

转载 作者:行者123 更新时间:2023-11-30 19:15:59 25 4
gpt4 key购买 nike

这个程序是比较字符串,但我不明白为什么它每次都返回相同的 c 值。任何人都可以帮助我理解这一点吗?谢谢。

 int func(char *n,char *m)
{
int c;
c = (int)malloc(sizeof(int));
c=0;
while(*n == *m)
{
if(*n=='\0' && *m=='\0')
{
int c=1;
break;
}
else
{
n++;
m++;
}
}
printf("%d \n",c);
return(c);
}

最佳答案

我相信函数的目的是返回
匹配 1
0 表示不匹配
c 的值设置为 1 作为字符串相等的指示符,并在 mn 之一为 null 时返回。 (如果相等,则两者均为空)
如果字符串不相等,则返回 c 作为初始化 -> 0

下面的版本就是这样做的。

将此版本与原始版本进行比较以获取建议的更改:

1) 您不需要为 int c 分配内存; 它隐式创建为 auto
2)您可以在同一行中初始化:int c = 0;
3) 不要在 if(...){...}block
中重新创建 int c4) 如果 *m*n 为 NULL,则希望退出。
5) 因为 while 保证 *m 和 *n 相同,所以不需要检查两者是否为 NULL。 (感谢@mch评论)

int func(char *n,char *m)
{
int c=0;//1,2,
while(*n == *m)
{
if(*n=='\0') //5, 4
{
c = 1;//3
break;
}
else
{
n++;
m++;
}
}
printf("%d \n",c);
return(c);
}

关于c - 字符串比较逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com