获取命令行的元素并将它们存储到数组中

Posted

技术标签:

【中文标题】获取命令行的元素并将它们存储到数组中【英文标题】:Getting elements of a command line and storing them into an array 【发布时间】:2013-04-28 20:48:01 【问题描述】:

我正在尝试在 C 中实现 Unix 命令“tar”。它将使用命令 p5a -c archive infile1 infile2 ... infilek 执行,其中参数 infile1、infile2、...、infilek 表示必须组合以创建存档的文件的名称。我无法从命令行获取文件名并将它们存储到数组中。任何帮助,将不胜感激。 谢谢!

【问题讨论】:

命令行上的文件名已经在一个数组中。您可以通过argv 访问它们。你能更好地解释你的问题吗? argv 存储命令行的所有参数,我只想要那些从 argv[3] 开始一直到最后一个输入文件的参数。我事先不知道输入文件的总数。我需要存储它们,以便我可以操纵它们中的每一个来创建我的存档文件。 char **myarray = argv + 3;int filecount = argc - 3;,然后。 【参考方案1】:

我真的不应该用勺子喂养看起来像家庭作业的问题,但我上次接触 gcc 已经 2 年了,需要一些练习。

一方面,您似乎能够使用 argc 来获取您想要的数据。问题是“如何知道”参数的数量。大多数人为此使用 argv。刚刚使用 Visual Studio 2010 进行了以下操作,

#include<stdio.h>
#include<conio.h>

int main(int argv, char *argc[])

    int i = 1;
    printf("Your arguments are:\n");
    for (i=0; i<argv; i++)
    
        printf("%s\n",argc[i]);
       
    return 0;

这里是一些示例输出(Win7 命令行),

C:\...\Debug>C_hello.exe this is a string of input
Your arguments are:
C_hello.exe
this
is
a
string
of
input

C:\...\Debug>

我希望您在 linux 中使用 gcc 也会得到类似的结果。

编辑:对此事进行了一些搜索。看起来有一个标准的 linux 库来处理这类事情, getopt

请参阅该页面上的示例。解释得很好。

【讨论】:

以上是关于获取命令行的元素并将它们存储到数组中的主要内容,如果未能解决你的问题,请参考以下文章

谷歌图表 - 获取行的颜色

读取特定行中的值(可变数量的值)并将它们存储在数组中

JQuery - 我可以用 jquery 移动数组元素吗?并将它们存储在另一个数组中?

转换 DataRow 项目数组的特定元素?

从 in[] 数组中获取元素并将它们连接起来的算法[关闭]

如何将字符串加载到 BYTE* 数组(C++)的元素中 [重复]