如何将命令行参数传递给 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 的 intargv[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 程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将命令行参数传递给 WinForms 应用程序?

将命令行参数传递给函数

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?