1

我想要做的是将命令行参数作为单个字符添加到数组中。因此,当用户运行程序./program bacon“培根”存储在一个数组中

array k[]= {'b', 'a', 'c', 'o', 'n'};

我希望我解释得足够好我是编程新手。

4

3 回答 3

1

实际上,“bacon”将通过 argv 1传递给您,这是一个char *以空结尾的字符串。现在您要创建的数组也应该是 char 数组。

从逻辑上讲,您应该只是将输入 (argv 1 ) 复制到新数组中。

您可以使用字符串操作函数,如strcpystrncpy

注意:我不是直接在此解决方案中添加代码,因为您自己尝试会更好。

于 2012-10-19T01:17:40.717 回答
0

所以,我知道你是编程新手,但这看起来很熟悉,不是吗?

int main (int argc, char **argv) {
  // ...
}

char **argv是指向 char 指针的指针,但出于您的目的,您可以认为它等同于char *argv[]. 区别很微妙,但值得注意,因为这个警告对于理解字符串在 C 中的工作方式至关重要。char *argv[]被显式键入为 char 指针数组,虽然char **argv可能是一个数组,但在你尝试访问它之前你不会知道像这样。鉴于它是您的主要功能,可以安全地假设它总是会被适当地实例化。

无论如何,越过切线,我们的char **argvmain 函数中有一个以 null 结尾的字符串数组。从您的问题中,我可以看到我们应该遵循的简单路径。我将假设只期望一个论点(否则您应该能够实施处理不同情况的案例)。

  1. argv[1]获取传递给我们程序的第一个参数 ( ) 的长度。
  2. 使用argv[1].
  3. 打印出我们的数组,以便我们知道它有效。

在我们的函数中,我们存储tomain的长度,并声明我们的 size 数组。然后,我们逐个字符地遍历第一个字符串,并将每个字符存储到数组的下一个开放槽中。最后,我们重复循环并打印出数组中的每一项,以便验证它是否有效。argv[1]nn

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");
}

希望这可以帮助。干杯。

于 2012-10-19T01:38:46.803 回答
0

使用传递给 main 的参数。您已经获得了一个数组 argv[1] 来为您执行此操作。我认为你最好阅读一些像这样的文章来开始 - http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html

于 2012-10-19T01:04:18.473 回答