我必须将文件中的数组元素与给定数组的元素进行比较,以便将它们替换为与第二个数组对应的第三个数组中的值。
我尝试循环遍历两个数组并比较它们,但由于它们的大小不同,所以不起作用。
int decrypt(char *letters,char *array1,char *array2,int count)
{
int i,j;
for(i=0;i<count;i++)
{
for(j=0;j<28;j++)
{
if(*(letters+i)== *(array1+j))
{
*(letters+i)= *(array2+j);
}
}
}
printf("The decrypted message is: %s\n",letters);
}
最佳答案
找到匹配项后,您必须从内部循环中break;
,否则该字母可能会再次被替换。假设解码数组是
char array1[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ .";
char array2[] = " .QWERTYUIOPASDFGHJKLZXCVBNM";
当字母'C'
被解码时,它将变成'Q'
,但如果不跳出内循环,' Q'
将再次被解码为 'G'
。我建议
int decrypt(char *letters, char *array1, char *array2, int count)
{
int i, j;
for(i = 0; i < count; i++)
{
for(j = 0; j < 28; j++)
{
if(letters[i] == array1[j])
{
letters[i] = array2[j];
break; // added here
}
}
}
printf("The decrypted message is: %s\n", letters);
}
请注意,如果输入消息包含小写字母,则应检测它们,将其转换为大写字母,进行解码,然后再转换回小写字母。
关于c - 如何比较两个大小不同的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56232709/