如何将多个字符连接成一个字符串并将其存储在字符串变量中?

时间:2020-06-10 05:11:21

标签: c encryption cs50

我目前正在处理一个分配,其中我从用户和字符串中获取命令行参数(整数值)。该代码获取字符串的每个元素(例如,“ Hello”中的“ H”)并使用密钥对其进行加密。因此,如果用户将命令行参数输入为3,则H会将K跳3个位置,依此类推。

我正在通过使用数组和for循环来执行此操作,即,随着循环计数器的增加,代码将检查相应的数组元素(“ H”将为array [0])并将其加密在一起。但是,如何将加密的字符连接为单个字符串,并将其存储在单个变量中,以便一旦添加完成,就可以在for循环外打印它。

在i = 0中,对于键3,H将为K,但是在下一个循环中,当“ e”变为“ h”时,它应该去并将其自身附加到“ K”上以使其成为“ Kh”,然后“ Kho”,然后是“ Khoo”,最后是“ Khoor”,然后在for循环之外(因为循环已退出),我希望能够一次性打印出来。

我是C语言的初学者,所以如果我有任何术语错误,或者听​​起来太混乱,请原谅。非常感谢您的帮助。

有关更多背景信息,这是有人建议的可复制性最低的代码。

for (int i = 0, n = strlen(input); i < n;  i++){
    char D = plaintext[i];
    printf("%c", D);
    }

这是不带加密部分的代码基础。如您所见,整个输入将自行打印,但仅在每次循环时才打印。我想修改代码,以便它不会立即显示D,但是随每个循环而变化的D的字符会在另一个变量中不断串联,因此当循环退出时,我可以打印出整个字符串变量立刻。

1 个答案:

答案 0 :(得分:0)

我不确定是什么作业。但是您可以将字符串长度设置为任意长度,并按如下所示通过索引进行分配:

int n = strlen(input);
// VLA use with caution.
char s[n];

for (int i = 0, i < n, i++)
{
    char D = plaintext[i];
    // do whatever
    printf("%c", D);
    s[i] = D;
    // add to string
}