鱼C论坛

 找回密码
 立即注册
查看: 1341|回复: 1

[已解决]关于指针课后作业的问题

[复制链接]
发表于 2020-10-30 23:50:41 | 显示全部楼层 |阅读模式
10鱼币
比较字符串 —— strcmp 和 strncmp 函数

#include<stdio.h>
#define max 1024
int main()
{
  char str1[max];
  char str2[max];
  char *target1 = str1;
  char *target2 = str2;
  int i =1;
  printf("请输入第一个字符串:");
  fgets(str1,max, stdin);
  printf("请输入第二个字符串:");
  fgets(str2,max, stdin);
  printf("正在比较中。。。");
  while(*target1++ != '\0'&& *target2 !='\0')
  {
      if(*target1++ != *target2++)
      {
          break;
      }
      i++;
  }
  if  (*target1 == '\0' && *target2 == '\0')
  {
        printf("这两个字符完全一致!!");
  }
  else
  {
      printf("这两个字符不一样你看不出来吗?,不同的是第%d个。",i);
  }
  return 0;

为什么无论输入什么字符串,输出的都是“不同的是第1个”呢?
我的这个代码和答案的差不多一样吧。
最佳答案
2020-10-30 23:50:42
 
//target1++了两次,而target2只++了一次
//所以,循环条件改为
//while(*target1 != '\0'&& *target2 !='\0')
while(*target1++ != '\0'&& *target2 !='\0')
  {
      if(*target1++ != *target2++)
      {
          break;
      }
      i++;
  }

最佳答案

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

使用道具 举报

发表于 2020-10-30 23:50:42 | 显示全部楼层    本楼为最佳答案   
 
//target1++了两次,而target2只++了一次
//所以,循环条件改为
//while(*target1 != '\0'&& *target2 !='\0')
while(*target1++ != '\0'&& *target2 !='\0')
  {
      if(*target1++ != *target2++)
      {
          break;
      }
      i++;
  }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 18:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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