0

我正在为一个类设计一个程序,其中一条指令是使用命令行输入。例如,当您运行main -n 5 3它时,它正在接受53作为参数。是什么-n

如何在带有代码块而不是 linux 机器的 PC 上进行测试?
我的程序将如何读取这些内容?
我是否需要将我的文件命名为 main ,然后在 main 中有两个参数可以适当地传入?

4

4 回答 4

4

main程序中的函数具有原型

int main (int argc, char ** argv);

Whereargc将包含传递的参数的数量,并且是指向包含您的参数argv的数组的指针,该数组包含以空字符结尾的字符串。char*

通常argv[0]包含您的程序名称、argv[1]您的第一个参数等。在您的情况下,当您使用-n 5 3您将拥有的参数运行程序时

argv[1] = "-n"
argv[2] = "5"
argv[3] = "3"
于 2013-10-09T20:12:18.750 回答
1

正如其他人指出的那样,参数在 argv[...] 中。在现实世界中,许多人使用getopt之类的东西来解析参数,因为它非常健壮并且已经过测试。

于 2013-10-09T20:14:23.827 回答
1

通常 C 使用 argc 和 argv 来允许您索引从命令行传递的参数。我已经有一段时间没有在 PC 上工作了,但是当我这样做时,代码与 Unix 一致。

#include <stdio.h>

int main (int argc, char *argv[]) {
  printf("Total args count=%s\n", argc);
  printf("Command=%s\n", argv[0]);

  for (i=1; i< argc; i++) {
    printf("\narg%d=%s", i, argv[i]);
  }

  printf("\n");
  return 0;
}

这将返回

Total Args 4
Command main 
  1 = -n 
  2 = 5 
  3 = 3
于 2013-10-09T20:23:55.010 回答
1

a.exe -n 5 3

导致以下内容argv

argv[0]= a.exe
argv[1]= -n
argv[2]= 5
argv[3]= 3
argv[4]=NULL

并且argc将是4


在 linux 上,有一个getopt函数unistd.h可以帮助您检索n选项并解析后面的参数。但是,如果您的程序只需要从后面-n的两个参数中查找并读取值,您可以这样做:

int i, x = 0, y = 0;
for (i = 0; i < argc; i++) {
    if (strcmp(argv[i], "-n") == 0 && i + 2 < argc) {
        x = atoi(argv[i+1]);
        y = atoi(argv[i+2]);
    }
}
于 2013-10-09T20:12:54.337 回答