鱼C论坛

 找回密码
 立即注册
查看: 1196|回复: 4

[已解决]求助第22课课后作业!非常感谢!!

[复制链接]
发表于 2020-2-6 18:37:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问大佬们这段代码是如何比较两个字符串是相等的呢?

if (*target1 == '\0' && *target2 == '\0')
        {
                printf("两个字符串完全一致!\n");
        }
这样写仅是比较两个字符串是否同时结束吗?

为什么不能用str1==str2或*target1==*target2来比较是否相同呢?

感谢解答!!


答案代码如下:

  1. #include <stdio.h>

  2. #define MAX 1024

  3. int main()
  4. {
  5.         char str1[MAX];
  6.         char str2[MAX];

  7.         char *target1 = str1;
  8.         char *target2 = str2;

  9.         int index = 1;

  10.         printf("请输入第一个字符串:");
  11.         fgets(str1, MAX, stdin);

  12.         printf("请输入第二个字符串:");
  13.         fgets(str2, MAX, stdin);

  14.         while (*target1 != '\0' && *target2 != '\0')
  15.         {
  16.                 if (*target1++ != *target2++)
  17.                 {
  18.                        break;
  19.                 }
  20.                 index++;
  21.         }

  22.         if (*target1 == '\0' && *target2 == '\0')
  23.         {
  24.                 printf("两个字符串完全一致!\n");
  25.         }
  26.         else
  27.         {
  28.                 printf("两个字符串不完全相同,第 %d 个字符出现不同!\n", index);
  29.         }

  30.         return 0;
  31. }
复制代码
最佳答案
2020-2-7 13:31:18
总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长的都不一样。第3种情况会触发break,第2种情况不会。第3种情况显然不符合条件。而第2种情况,两个字符串不会同时结束。所以这两种情况都是字符串,不完全一致。剩下的情况就是字符串完全一致。

题图

题图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 18:59:35 From FishC Mobile | 显示全部楼层
如果两个字符串完全一致,就不会触发break。否则就会触发break(还有一种情况),那么你说的这句话显然是否定的,如果一一个短的字符串的所有子符和一个长的字符串前半部分相等,不会触发break,他们就不会同时结束,条件也是否定的。第1种方法不行,因为字符串不能直接比较。第2种方法可能出现误判,就是前面那种情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-6 23:29:55 | 显示全部楼层
召唤风云 发表于 2020-2-6 18:59
如果两个字符串完全一致,就不会触发break。否则就会触发break(还有一种情况),那么你说的这句话显然是否定 ...

这两种方法为什么不行我明白了谢谢,但还是不太明白这段程序到底是怎么判定两个字符串相同的呢?能麻烦再详细解释一下吗谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-7 13:31:18 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长的都不一样。第3种情况会触发break,第2种情况不会。第3种情况显然不符合条件。而第2种情况,两个字符串不会同时结束。所以这两种情况都是字符串,不完全一致。剩下的情况就是字符串完全一致。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-7 15:40:32 | 显示全部楼层
召唤风云 发表于 2020-2-7 13:31
总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长 ...

明白了!十分感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表