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

How to concatenate several characters into a single string and store it in a string variable?

我目前正在做一项作业,我从用户那里获取一个命令行参数(一个整数值)和一个字符串。该代码获取字符串的每个元素(例如,'H' 来自 'Hello')并使用密钥对其进行加密。所以如果用户输入命令行参数为3,H会跳3个地方到K等等。

我通过使用数组和 for 循环来做到这一点,即随着循环计数器的增加,代码检查相应的数组元素('H' 将是数组 [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 的字符会随着每个循环而变化,并在另一个变量中不断连接到自身,这样当循环退出时,我可以打印出整个字符串变量立刻。

我不完全确定作业是什么。但是您可以将字符串长度设置为任何您想要的长度并按索引分配,如下所示:

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
}