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



我目前正在处理一项作业,其中我从用户那里获取命令行参数(整数值(和一个字符串。代码获取字符串的每个元素(例如,"Hello"中的"H"(并使用密钥对其进行加密。因此,如果用户输入命令行参数为 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
}

最新更新