获取命令行的元素并将它们存储到数组中
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
请参阅该页面上的示例。解释得很好。
【讨论】:
以上是关于获取命令行的元素并将它们存储到数组中的主要内容,如果未能解决你的问题,请参考以下文章