c - 比较两个数组(由字符串或字符组成)并且不打印它们的差异数
问题描述
为什么表示两个数组之间差异的差异输出为零?语言: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;
}
解决方案
假设变量 q 被用作内存偏移量,您需要将 char 指针 str1 和 str2 设置为数组中的内存位置,其中 scanf 存储从标准输入读取的值。
#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;
}
推荐阅读
- intellij-idea - Intellij 未在 UI 中显示 `git diff` 和 `git diff --staged` 更改
- r - 将数据框列表的列转换为因子
- python - 我如何在 python 3.8 中重复一段代码
- angular - 错误:-“无法访问 SonarQube 服务器 [http://localhost:9000]”在本地对 y 代码运行 sonarqube-scanner 时
- javascript - 禁用 textarea 时,文本区域 maxlength 不起作用
- python-3.x - 如何从另一个具有重复项的数据帧更新数据帧
- java - Spring MVC中Model的实际实现是什么
- java - 在java中对json对象进行排序
- python - 在将时区指定为 IST 时出现错误。为什么?
- javascript - 在 reactjs 中创建私有路由的最佳方法是什么