求助第22课课后作业!非常感谢!!
请问大佬们这段代码是如何比较两个字符串是相等的呢?if (*target1 == '\0' && *target2 == '\0')
{
printf("两个字符串完全一致!\n");
}
这样写仅是比较两个字符串是否同时结束吗?
为什么不能用str1==str2或*target1==*target2来比较是否相同呢?
感谢解答!!
答案代码如下:
#include <stdio.h>
#define MAX 1024
int main()
{
char str1;
char str2;
char *target1 = str1;
char *target2 = str2;
int index = 1;
printf("请输入第一个字符串:");
fgets(str1, MAX, stdin);
printf("请输入第二个字符串:");
fgets(str2, MAX, stdin);
while (*target1 != '\0' && *target2 != '\0')
{
if (*target1++ != *target2++)
{
break;
}
index++;
}
if (*target1 == '\0' && *target2 == '\0')
{
printf("两个字符串完全一致!\n");
}
else
{
printf("两个字符串不完全相同,第 %d 个字符出现不同!\n", index);
}
return 0;
} 如果两个字符串完全一致,就不会触发break。否则就会触发break(还有一种情况),那么你说的这句话显然是否定的,如果一一个短的字符串的所有子符和一个长的字符串前半部分相等,不会触发break,他们就不会同时结束,条件也是否定的。第1种方法不行,因为字符串不能直接比较。第2种方法可能出现误判,就是前面那种情况。 召唤风云 发表于 2020-2-6 18:59
如果两个字符串完全一致,就不会触发break。否则就会触发break(还有一种情况),那么你说的这句话显然是否定 ...
这两种方法为什么不行我明白了谢谢,但还是不太明白这段程序到底是怎么判定两个字符串相同的呢?能麻烦再详细解释一下吗谢谢! 总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长的都不一样。第3种情况会触发break,第2种情况不会。第3种情况显然不符合条件。而第2种情况,两个字符串不会同时结束。所以这两种情况都是字符串,不完全一致。剩下的情况就是字符串完全一致。 召唤风云 发表于 2020-2-7 13:31
总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长 ...
明白了!十分感谢!
页:
[1]