啊这啧啧啧 发表于 2023-4-23 18:26:54

判断字符不完全一致时,第几个字符出现不同

#include <stdio.h>
#include <string.h>
#define MAX 1024
int main()
{
      char str1,str2;
      char *target1 = str1;
      char *target2 = str2;
      
      printf("请输入第一个字符串:");
      fgets(str1, MAX, stdin);
      printf("请输入第二个字符串:");
      fgets(str2, MAX, stdin);
      
                int num=0;
               
      while(*target1!='\0'&&*target2!='\0'){
                      if(*target1++=*target2++){//当字符一样
                                num++;
                        }
                }
                       
      if(!strcmp(str1,str2)){
                  printf("两个字符串完全一致!");
                }else{
                        printf("两个字符串不完全相同,第%d个字符出现不同!",num);
                }

      return 0;
}

isdkz 发表于 2023-4-23 18:28:24

您的代码中有一个错误,您应该在比较字符时使用“==”而不是“=”。这是修改后的代码:

#include <stdio.h>
#include <string.h>
#define MAX 1024

int main()
{
    char str1, str2;
    char *target1 = str1;
    char *target2 = str2;

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

    int num = 0;

    while (*target1 != '\0' && *target2 != '\0') {
      if (*target1 == *target2) { // 当字符一样
            num++;
            target1++;
            target2++;
      } else {
            break;
      }
    }

    if (!strcmp(str1, str2)) {
      printf("两个字符串完全一致!");
    } else {
      printf("两个字符串不完全相同,第%d个字符出现不同!", num + 1);
    }

    return 0;
}


现在,这段代码将会正确地比较两个字符串的每个字符,直到找到第一个不同的字符为止,并输出不同字符的位置。
页: [1]
查看完整版本: 判断字符不完全一致时,第几个字符出现不同