如何将命令行参数传递给 c 程序
Posted
技术标签:
【中文标题】如何将命令行参数传递给 c 程序【英文标题】:How to pass command line arguments to a c program 【发布时间】:2013-07-12 19:09:48 【问题描述】:自从我学会编程以来,我就知道如何编写一个接受命令行参数的程序。我不明白的是这些参数如何获得它们的值。希望我没有将这两者混淆,但参数和参数之间存在差异。 argument 是在调用函数时赋予函数的值,例如: foo(a, b, c);其中 a、b 和 c 是值。 参数是被调用时函数内部的值。
所以我的问题是人们如何将命令行参数传递给程序?我了解如何读取参数,argc
是参数的数量,argv
是指向包含参数等的字符串数组的指针,但我只是不知道如何给这些参数一个价值..
我正在寻找有关 C 和 C++ 的信息。我在这方面有点新手。
【问题讨论】:
这将是特定于操作系统的,尽管在 unix 风格的系统上,您可以查看 exec() 系列函数的手册页 - 这是命令 shell 通常使用的参数它已从命令行解析。 “我从来没有使用过这个功能,因为我不知道如何将这样的参数传递给程序” - 前面两句话:“我知道如何编写一个接受命令行的程序自从我学会编程以来的争论” - 现在真相是什么? 另外,在我看来,你似乎没有读过初学者 C++ 教程的第 1 章,这应该很早就被描述了在那里。 这是事实。我认为它不是很清楚。我想知道如何将参数传递给程序,而不是参数!我想知道如何将值作为参数提供给程序以用作参数!换句话说,用户如何为程序提供参数?因为余浩、TGH 和 Nobilis 拥有我想要的东西。 @user529758 我想我应该澄清一下(三年后)。当我发布这个问题时,我根本不知道如何将命令行参数传递给程序。无论如何,我读过的任何课程或书籍都没有详细说明如何做到这一点。我所做的一切都在像 VS Express 这样的 IDE 中。 Chris Stratton 我可以保证我当时也不知道联机帮助页是什么,也不知道 exec() 系统调用是什么。不过我现在知道这些了! :) 我认为我当时从未使用过 Linux。 What does int argc, char *argv[] mean?的可能重复 【参考方案1】:在 Windows 环境中,您只需像这样在命令行中传递它们:
myProgram.exe arg1 arg2 arg3
argv[1] 包含 arg1 等
主要功能如下:
int main (int argc, char *argv[])
【讨论】:
补充一点,你的main
函数声明是int main (int argc, char *argv[])
,你应该可以得到argv[1]
、argv[2]
等等。【参考方案2】:
在 *nix 上,有一个很好的 utility 可以让您以非常直接的方式解析命令行标志和参数。在同一页面上有一个很好的例子。
然后您将运行您的程序并以非常标准化的方式向它传递参数:
$ ./my_app -a -b -c argument1 argument2
你可以不用它,只需要自己解析它们,但如果你的目标是让你的应用对其他人有用,那么让它符合标准绝对值得。
【讨论】:
【参考方案3】:在 *nix 上:
$ ./my_prog arg1 arg2
在 Windows 命令行上:
C:\>my_prog.exe arg1 arg2
在这两种情况下,鉴于main
被声明为:
int main (int argc, char *argv[])
argc
将是一个值为 3 的 int
,argv[1] = "arg1"
,argv[2] = "arg2"
,此外,argv[0]
将具有程序的名称,my_prog
。
命令行参数通常用空格分隔,如果您希望传递带有空格的参数,例如hello world
,请使用双引号:
$ ./my_prog "hello world"
【讨论】:
【参考方案4】:只需点击开始菜单并在搜索索引中输入 cmd...按 Enter ..现在在 cmd 窗口中输入以下命令... “program_name arg1 arg2”(不带引号)并按回车键……是的,它完成了! 和
【讨论】:
请尝试在您的答案中添加一些新行,这里有点难以阅读,您可能还想注意这仅适用于 Windows。但是 +1 你是对的。以上是关于如何将命令行参数传递给 c 程序的主要内容,如果未能解决你的问题,请参考以下文章