c - 如何比较两个大小不同的数组?

标签 c arrays

我必须将文件中的数组元素与给定数组的元素进行比较,以便将它们替换为与第二个数组对应的第三个数组中的值。

我尝试循环遍历两个数组并比较它们,但由于它们的大小不同,所以不起作用。

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/

相关文章:

c - 为什么运行此代码时 cmd 会崩溃?

C 指针行为,第二卷

c - 函数调用期间的内存管理

javascript - 数组和 pureCompulated 值

arrays - 按日期排序时 Swift 数组排序错误

java - 如何使用 Java 流将两个数组合并到一个映射中?

c - 如何在没有得到编译警告的情况下表达 wait(NULL)?

c++ - 基本 C/C++ 类型的值是如何物理存储的?

arrays - $SGE_TASK_ID 未通过 qsub 数组网格作业进行设置

php - 从 PHP 变量中删除空数组