C++ 如何连接和打印字符串的每个元素? intmain(intargc,字符串argv[]){ int ln=strlen(argv['\0']); 整数计数=0; char cipher_关键字[count+1]; 对于(int i=1;i

C++ 如何连接和打印字符串的每个元素? intmain(intargc,字符串argv[]){ int ln=strlen(argv['\0']); 整数计数=0; char cipher_关键字[count+1]; 对于(int i=1;i,c++,c,arrays,string,substring,C++,C,Arrays,String,Substring,输入为: argv(文件arg1、arg2、arg3) 例如: argv(文件,abc defg hijkl) 现在,当我在循环中打印cipher\u关键字[j]时,我会逐行打印字符串的每个元素(这是预期的)。我希望将其存储在cipher\u keyword中,循环外部的printf命令应在一行中提供所有元素,不带任何空格。但是在循环外的printf命令中,cipher\u关键字给出了[str.length][j]的结果,即jijkl 如何使printf命令在循环外打印所有元素,即abcdefg

输入为:

argv(文件arg1、arg2、arg3)

例如:

argv(文件,abc defg hijkl)

现在,当我在循环中打印
cipher\u关键字[j]
时,我会逐行打印字符串的每个元素(这是预期的)。我希望将其存储在
cipher\u keyword
中,循环外部的
printf
命令应在一行中提供所有元素,不带任何空格。但是在循环外的
printf
命令中,
cipher\u关键字
给出了
[str.length][j]
的结果,即
jijkl


如何使
printf
命令在循环外打印所有元素,即
abcdefghijkl

cipher\u关键字
仅为其分配了1个
char
。您的循环正在溢出阵列。因此,您的代码具有未定义的行为

您需要在
argv
中循环一次以计算所需的总数
count
,然后分配数组,然后再次循环
argv
以填充数组

填充数组时,需要使用单独的索引计数器来正确访问数组元素。您使用的是内部循环的计数器,它会在处理的每个命令行参数上重置回0。所以您正在覆盖数组元素

您也没有告诉
printf()
cipher\u keyword
中实际有多少
char
可用于打印,可以通过null终止
cipher\u keyword
,或者通过将
count
作为参数传递给
printf()
。您必须执行其中一个步骤,否则
printf()
可能会超出数组的界限,并从周围内存打印垃圾

尝试类似以下内容:

intmain(intargc,字符串argv[])
{
整数计数=0;
对于(int i=1;i
是。我试过运行你的代码。但我仍然得到了相同的答案,也就是说,它只打印最后一个元素的字符。我也尝试了你的printf替代代码,但仍然是相同的答案。@Indu对不起,我遗漏了一个重要的细节。我已经更新了答案。我也不认为你可以做int ln=strlen(argv['\0']);您应该在[]括号中传递一个int,如argv[0]