1

我在 C 中使用 LIBSVM 进行性别检测。在 sum-train.c 中有一个函数 parse_command_line(argc, argv, input_file_name, model_file_name);

现在我想将参数传递给这个函数,但不是使用命令行,而是在这个程序中。例如,参数可以是: -s 1 -t 2 -c 1 -g 0.5 -v 5 input_file_name model_file_name

但我不知道如何将这些参数传递给这个函数。*注意:我这样做是因为我不想使用提供的二进制文件。任何帮助将不胜感激。

4

1 回答 1

1

如果它们是标准main类型的参数,那么这就是您所需要的。

argc必须是参数的计数,包括“程序名称”(引用是因为此值设置为取决于实现)。

argv应该是一个字符指针数组,指定:

  • “程序名称”。
  • 每个论点。
  • 一个 NULL 终止符。

所以,对于命令行

-s 1 -t 2 -c 1 -g 0.5 -v 5 input_file_name.dat model_file_name.dat

你将会拥有:

const char *myArgV[] = {
    "progname",
    "-s", "1",
    "-t", "2",
    "-c", "1",
    "-g", "0.5",
    "-v", "5",
    "input_file_name.dat",
    "model_file_name.dat",
    NULL };
int myArgC = sizeof (argv) / sizeof (argv[0]) - 1;

并致电:

char inputfile[100]; // potential buffer overflow risk but, since it is
char modelfile[100]; //  sample code, not really relevant.
parse_command_line (myArgC, myArgV, inputfile, modelfile);

这将解析参数,填充您传入的两个文件名变量,并svm_parameter根据提供的参数设置内部。

于 2012-08-17T01:31:00.603 回答