C编程数组赋值问题

标签 c arrays loops

我正在为一项作业编写此程序。该代码是根据文本中字母的出现频率来解密密文。当我尝试将密文字母更改为其明文字母时,问题就出现了。由于某种原因,密文字母被更改为随机字母。

我试图找出问题所在,因此我将 print 语句添加到执行交换的代码中。我注意到,对于每个字母,代码在进行最后一次分配之前都会交换两次。这是代码片段:

//decryption
for (j = 0, k = strlen(cipher); j < k; j++) {


    for (c = 0 ; c < 26; c++){


       if (cipher[j] == freqCounts[c].letter){//checks if the ciphertext letters match

              //use the following line of code to see how the swap is being handled
               /* 
               printf("f[%d] = %c and c[%d] =  %c\n", c, freqCounts[c].pletter, j, cipher[j]);
               */
        cipher[j] = freqCounts[c].pletter;//swaps with plaintext letter here

           }
        }
   }

您能否提供一些关于为什么要对每个字母进行额外交换的见解。

最佳答案

假设 freqCounts[0].letter=='a', freqCountes[0].pletter=='b', freqCountes[1] .letter=='b'.

在这种情况下,cipher[j] == freqCounts[c].letterc=0 处变为 true,并且在 c 处再次变为 true =1.

我认为在 cipher[j] = freqCounts[c].pletter; 之后添加 break; 可能会起作用。

关于C编程数组赋值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32550044/

相关文章:

javascript - 递归展平数组(为什么我的函数不起作用?)

javascript - 通过循环二维数组创建多个对象?

c - 使用 IAR 工具链将目标文件链接到不可执行的镜像

c - UNIX - 我的主要语法错误

java - 使用辅助方法在没有比较器的情况下对 Java 中的 2D Int Array 进行排序

java - 延迟改变颜色

python - 如果索引超出范围(Python/Django),如何保存 None/Null

c - 如何从定义初始化 char[]

c - 难以打印字符指针数组

java - equals/Arrays.deepequals 在相同数组上返回 false