爱俯卧撑的123 发表于 2022-1-5 23:05:06

求助!使用指针和fgets函数实现strcmp(比较字符串)

#include<stdio.h>

#define MAX 1024

int main()

{
        char str1,str2,ch1,ch2;
        char*p1=str1,*p2=str2;
        int count=1;
       
        printf("请输入第一个字符串:") ;
        fgets(str1,MAX,stdin);
        printf("请输入第二个字符串:") ;
        fgets(str2,MAX,stdin);
       
        while(1)
        {
                ch1=*p1++;
                ch2=*p2++;
                if(*p1==*p2)
                {
                        count++;
                }
                if(*p1=='\0'&&*p2=='\0')
                {
                        printf("两个字符串完全一致!\n");
                        break;
                }
                if(*p1!=*p2)
                {
                        printf("两个字符串不完全相同,第%d个字符出现不同!\n",count+1);
                        break;
                }
        }
}


结果如下:

这样,没有问题

也没有问题。
但如果只输入一个字符时,问题出现:



求解。

大马强 发表于 2022-1-5 23:37:15

#include<stdio.h>

#define MAX 1024

int main()

{
      char str1,str2,ch1,ch2;
      char*p1=str1,*p2=str2;
      int count=1; //你这都是一开始了,后面就没必要再加个一了
      
      printf("请输入第一个字符串:") ;
      fgets(str1,MAX,stdin);
      printf("请输入第二个字符串:") ;
      fgets(str2,MAX,stdin);
      
      while(1)
      {
//                ch1=*p1++;你这样就直接跳过第一个字符了,所以你的第三个截图的原因就是这个
//                ch2=*p2++;
                if(*p1==*p2)
                {
                        count++;
                }
                if(*p1=='\0'&&*p2=='\0')
                {
                        printf("两个字符串完全一致!\n");
                        break;
                }
                if(*p1!=*p2)
                {
                        printf("两个字符串不完全相同,第%d个字符出现不同!\n",count);
                        break;
                }
                // 要先比较完再移位
                *p1++;
                *p2++;
      }
}

爱俯卧撑的123 发表于 2022-1-6 10:43:43

大马强 发表于 2022-1-5 23:37


感谢嘞!懂了!
页: [1]
查看完整版本: 求助!使用指针和fgets函数实现strcmp(比较字符串)