孤世星辰 发表于 2020-4-13 10:11:05

一个程序思路问题

#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++)//我的思路:最后一个字符不相等 target++='\0'
                {
                     break;
                }
                index++;
      }

      if (*target1 == '\0' && *target2 == '\0')//我的思路:那么他就应该跳入这个循环
      {
                printf("两个字符串完全一致!\n");
      }
      else
      {
                printf("两个字符串不完全相同,第 %d 个字符出现不同!\n", index);
      }

      return 0;
}

但是程序还是运行正确了这是为啥

sunrise085 发表于 2020-4-13 10:30:10

这个程序没问题啊。
不知道你想问什么,
没太明白你的那俩个注释要说明什么

BngThea 发表于 2020-4-13 10:32:13

break出去的,if条件不成立,输出else部分

孤世星辰 发表于 2020-4-13 10:34:53

sunrise085 发表于 2020-4-13 10:30
这个程序没问题啊。
不知道你想问什么,
没太明白你的那俩个注释要说明什么

我的意思是最后一个字符不相等,然后两个target++他就全等于‘\0’了,应该输出两个字符完全一致才对啊

孤世星辰 发表于 2020-4-13 10:35:45

BngThea 发表于 2020-4-13 10:32
break出去的,if条件不成立,输出else部分

我的意思是最后一个字符不相等,然后两个target++他就全等于‘\0’了,然后break,应该输出两个字符完全一致才对啊

Cool_Breeze 发表于 2020-4-13 10:43:51

孤世星辰 发表于 2020-4-13 10:35
我的意思是最后一个字符不相等,然后两个target++他就全等于‘\0’了,然后break,应该输出两个字符完全 ...

不是结束符,还有一个换行符\10,所以不成立!if (*target1 == '\0' && *target2 == '\0')//我的思路:那么他就应该跳入这个循环
页: [1]
查看完整版本: 一个程序思路问题