0

所以我在这里和谷歌上浏览并尝试了各种形式来尝试实现这一点。看起来应该不难。我已经尝试从 char 中获取一个值,尝试只在其上使用数学,因为我已经读到 C 中的 char 无论如何都是编译器的一个数字。我拥有的是一个由 4 个字符串组成的数组。每个元素是另一个 20 + 1 个字符的数组(包括空 \0)我想要做的是使用变量“decryption_shift”将每个字符串中每个字符的值移动一个预定义的量。我以为我在做的是使用 2 个 for 循环,一个用于一次执行一个字符串,另一个用于更改字符串中的每个字符。我试过使用指针,tmp 变量。是的,这是一个家庭作业,问题是这是一个更高级别的课程,他们不是 t教我们方法/功能/语法,他们希望我们自己研究和学习如何去做。我已经花了 2 个小时试图找出这个片段,但不知道还能去哪里。任何帮助是极大的赞赏。~贾斯汀

void decrypt_chunks()
{
    for (m = 0; m < 0; m++)
    {
        for (n = 0; n < 20; n++)
        {
            // int *chunksp = &chunks[m][n];
            chunks[m][n] = chunks[m][n] - DECRYPTION_SHIFT;
            // *chunksp[m][n]=tmp;
            // chunks[m][n]=tmp;
        }
    }
}
4

2 回答 2

0

你的问题在这里:

for (m = 0; m < 0; m++)

循环永远不会执行,因为在初始化时满足终止条件。尝试

for (m = 0; m < 4; m++)
于 2013-09-15T00:39:17.780 回答
0
  1. 我看不到 DECRYPTION_SHIFT 或块在哪里定义(和初始化),所以请确保你实际上是在全局或 decrpyt_chunks() 函数中定义它(注意:通常你写变量小写和宏大写,如果 DECRYPTION_SHIFT 是变量,你应该用小写字母写)

  2. for (m = 0; m < 0; m++)虽然从不运行,但这个语句在文字中类似于:将 m 设置为 ziro(顺便说一句,您在哪里定义了 m?)并执行以下操作,只要 m 小于 ziro(绝不是这种情况,因为您将其设置为 ziro )

由于这似乎是一个非常基本的问题,请确保您真正了解编程语言是什么以及它是如何工作的,并考虑阅读一两本关于 c(或几乎任何其他编程语言,因为这项作业在大多数现代语言中都很漂亮)几乎相同)。

要真正让这件事变得有趣,你基本上所做的就是像Caesar一样加密,所以要实现这一点,代码可能类似于以下代码:

#include <stdio.h>
#include <string.h>

void decrypt_chunks(int decryption_shift);

char chunks[4][21];

int main(int stdr, char *stdv[])
{
    strcpy(chunks[0],"Hello World! And Bye");

    printf("message string:   %s\n", chunks[0]);
    decrypt_chunks(1);
    printf("encrypted string: %s\n", chunks[0]);
    decrypt_chunks(-1);
    printf("decrypted sring:  %s\n", chunks[0]);
}

void decrypt_chunks(int decryption_shift)
{
    for (int m = 0; m < 4; m++)
    {
        for (int n = 0; n < 20; n++)
        {
            chunks[m][n] = chunks[m][n] - decryption_shift;
        }
    }
}
于 2013-09-15T00:51:41.383 回答