17

自从我学会编程以来,我就知道如何编写一个接受命令行参数的程序。我不明白的是这些参数如何获得它们的值。希望我没有将这两者混淆,但参数和参数之间存在差异。参数是在调用函数时赋予函数的值,例如: foo(a, b, c); 其中 a、b 和 c 是值。参数是被调用时函数内部的值。

所以我的问题是一个人如何将命令行参数传递给程序?我了解如何读取参数,即参数argc的数量,argv是指向包含参数等的字符串数组的指针,但我只是不知道如何给这些参数一个值..

我正在寻找 C 和 C++ 的信息。我在这方面有点新手。

4

4 回答 4

13

在 Windows 环境中,您只需在命令行中传递它们,如下所示:

myProgram.exe arg1 arg2 arg3

argv[1] 包含 arg1 等

主要功能如下:

int main (int argc, char *argv[])
于 2013-07-15T01:18:15.757 回答
10

在 *nix 上:

$ ./my_prog arg1 arg2

在 Windows 命令行上:

C:\>my_prog.exe arg1 arg2

在这两种情况下,给定的main声明为:

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

argc将是int一个值为 3 的 , argv[1] = "arg1",argv[2] = "arg2"另外,argv[0]将具有程序的名称, my_prog.

命令行参数通常用空格分隔,如果您希望传递带有空格的参数,例如hello world,请使用双引号:

$ ./my_prog "hello world"
于 2013-07-15T02:29:35.187 回答
2

在 *nix 上,有一个非常好的实用程序,可以让您以非常直接的方式解析命令行标志和参数。在同一页面上有一个很好的例子。

然后,您将运行您的程序并以非常标准化的方式将参数传递给它:

$ ./my_app -a -b -c argument1 argument2

你可以不用它,只需要自己解析它们,但如果你的目标是让你的应用程序对其他人有用,那么让它符合标准绝对值得。

于 2013-07-15T01:27:14.760 回答
1

只需单击开始菜单并在搜索索引中键入 cmd...按回车 ..现在在 cmd 窗口中键入以下命令...“program_name arg1 arg2”(不带引号)并按回车键...是的,它完成了!和

于 2014-08-19T10:32:44.727 回答