【问题标题】:Comparison of two arrays (made of string or character) And Do not print the number of their differences比较两个数组(由字符串或字符组成)并且不打印它们的差异数
【发布时间】:2020-07-17 14:03:06
【问题描述】:

为什么表示两个数组之间差异的差异输出为零? 语言:C

#include <stdio.h>
#include <stdlib.h>
long int n=100000;
long int Difference=0;
long int q;
char *str1,*str2;
int main()
{
char string1[n];
char string2[n];
scanf("%ld",&q);
scanf("%s",&string1[q]);
scanf("%s",&string2[q]);
str1=string1;
str2=string2;
for(int i=0; str1[i]!='\0' && str2[i]!='\0'; i++)
{
if(str1[i]!=str2[i])
Difference+=1;
}
printf("%ld",Difference);
return 0;
}

【问题讨论】:

    标签: c arrays string compare character


    【解决方案1】:

    假设变量 q 被用作内存偏移量,您需要将 char 指针 str1 和 str2 设置为数组中 scanf 存储从 stdin 读取的值的内存位置。

    #include <stdio.h>
    #include <stdlib.h>
    
    long int n = 100000;
    long int Difference = 0;
    long int q;
    char *str1,*str2;
    
    int main()
    {
        char string1[n];
        char string2[n];
    
        scanf("%ld",&q);
        scanf("%s",&string1[q]);
        scanf("%s",&string2[q]);
    
        // Set the char pointers to the address in the array
        // q distance from the initial address of the array 
        // because you stored your input strings at that address
        // and not at the beginning of the array in memory
        str1 = string1 + q;
        str2 = string2 + q;
    
        for(int i=0; str1[i] != '\0' && str2[i] != '\0'; i++)
        {
            if(str1[i] != str2[i])
                Difference += 1;
        }
    
        printf("%ld", Difference);
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多