【问题标题】:How to pass command line arguements to my main function? [duplicate]如何将命令行参数传递给我的主函数? [复制]
【发布时间】:2013-12-12 16:39:10
【问题描述】:

所以我的主要功能是这样的:

int main(int numberOfArguments, char* argumentArray[]) {
        if (assemble(numberOfArguments, argumentArray)) {
                return 0;
        } else {
                return -1;
        }
}

我希望能够将争论交给命令行

./program inputFile.txt outputFile.txt // PROBLEM IS that this is being interpreted as 3 command line arguments somehow when it is only 2.

其中 inputFile.txt 是 argumentArray[0],而 outputFile.txt 是 argumentArray[1]

【问题讨论】:

  • 你的assemble 是什么?您的代码已经能够通过访问您的 numOfArgs 和 argArray 来处理命令行参数。
  • 您的程序存储为命令 0,其余的继续这样。所以是的,解释是正确的

标签: c compilation command-line-arguments main


【解决方案1】:

从文本命令行生成参数是特定于平台的,但argv 数组的第一个元素几乎总是用于查找程序的名称。

如果您想丢弃第一个参数,只需在main 的开头添加:

-- numberOfArguments;
++ argumentArray;

【讨论】:

    【解决方案2】:

    您在命令行中输入的每个单词(以可执行文件名开头)都会在开始时传递给 main 函数。 related question

    第一个参数argumentArray[0] 是保留的相关问题中的可读性。 之后,您将每个单词(在命令行中由空格分隔)作为参数数组中的一个元素。

    argumentArray 的大小由 numberOfArguments 给出。

    因此,如果您坚持将输入文件放在 [0] 上,您应该使用一些指针算法,例如 argumentArray++;否则,您将自动在 [1] 和 [2] 处获得给定数据。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2013-12-23
      • 1970-01-01
      • 2015-04-17
      • 2014-07-22
      • 2010-10-30
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      相关资源
      最近更新 更多