我要做的是将一个命令行参数作为独立字符添加到数组中。
因此,当用户运行程序./program bacon
时,“bacon”将作为
array k[]= {'b', 'a', 'c', 'o', 'n'};
我希望我解释得很好,我是编程新手。
答案 0 :(得分:1)
实际上,“bacon”将通过argv 1传递给您,这是一个char *
和一个以空字符结尾的字符串。现在,您要创建的数组也应该是一个char数组。
逻辑上你应该只是将输入(argv 1)复制到新数组中。
注意:我不是直接在此解决方案中添加代码,因为您最好自己尝试一下。
答案 1 :(得分:0)
使用传递给main的参数。您将获得一个数组argv [1],它可以为您完成此操作。我认为最好先阅读一些像这样的文章来开始 - http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html
答案 2 :(得分:0)
所以,我知道你是编程的新手,但这看起来很熟悉,不是吗?
int main (int argc, char **argv) {
// ...
}
char **argv
是指向char指针的指针,但出于您的目的,您可以将其视为等同于char *argv[]
。差异是微妙的,但值得注意,因为这个警告对于理解字符串在C中的工作方式至关重要。char *argv[]
显式地键入为char指针数组,而char **argv
可以是数组但是你直到你试图这样访问它才会知道。鉴于它是您的主要功能,可以安全地假设它将始终被适当地实例化。
无论如何,移过切线,我们的main函数中的char **argv
中有一个以null结尾的字符串数组。从你的问题,我可以看到一个我们应该遵循的简单路径。我将假设只有一个参数被预期(否则你应该能够实现处理不同情况的案例)。
argv[1]
)的长度。argv[1]
。在我们的main
函数中,我们将argv[1]
的长度存储到n
,并声明我们的大小为n
的数组。然后,我们逐个字符地迭代第一个字符串,并将每个字符存储到数组的下一个打开的插槽中。最后,我们重复循环并打印出数组中的每个项目,以便我们验证它是否有效。
int main (int argc, char *argv[]) {
int n = strlen(argv[1]);
char arr[n];
int i;
for (i = 0; i < n; i++)
arr[i] = argv[1][i];
for (i = 0; i < n; i++)
printf("%c ", arr[i]);
printf("\n");
}
希望这会有所帮助。欢呼声。