将命令行字符串添加到数组作为单独的字符

时间:2012-10-19 01:00:38

标签: c

我要做的是将一个命令行参数作为独立字符添加到数组中。 因此,当用户运行程序./program bacon时,“bacon”将作为

存储在数组中
array k[]= {'b', 'a', 'c', 'o', 'n'};

我希望我解释得很好,我是编程新手。

3 个答案:

答案 0 :(得分:1)

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

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

您可以使用字符串操作功能,例如strcpystrncpy

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

答案 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结尾的字符串数组。从你的问题,我可以看到一个我们应该遵循的简单路径。我将假设只有一个参数被预期(否则你应该能够实现处理不同情况的案例)。

  1. 获取传递给我们程序的第一个参数(argv[1])的长度。
  2. 使用argv[1]
  3. 中的字符填充数组
  4. 打印出我们的阵列,以便我们知道它有效。
  5. 在我们的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");
    }
    

    希望这会有所帮助。欢呼声。