【问题标题】: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;
}