Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将命令行参数传递给函数_C_Svm_Libsvm - Fatal编程技术网

C 将命令行参数传递给函数

C 将命令行参数传递给函数,c,svm,libsvm,C,Svm,Libsvm,我正在使用C语言中的LIBSVM进行性别检测。在sum train.c中有一个函数 解析命令行(argc、argv、输入文件名、模型文件名) 现在我想把参数传递给这个函数,但不使用命令行,而是在这个程序中。e、 g参数可以是: -s1-t2-c1-g0.5-v5输入文件名模型文件名 但我不知道如何将这些参数传递给这个函数。 *注意:我这样做是因为我不想使用提供的二进制文件。任何帮助都将不胜感激。如果它们是标准的主类型参数,以下是您需要的 argc必须是参数计数,包括“程序名”(引用此值是因为此值

我正在使用C语言中的LIBSVM进行性别检测。在sum train.c中有一个函数 解析命令行(argc、argv、输入文件名、模型文件名)

现在我想把参数传递给这个函数,但不使用命令行,而是在这个程序中。e、 g参数可以是: -s1-t2-c1-g0.5-v5输入文件名模型文件名

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

如果它们是标准的
类型参数,以下是您需要的

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

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

  • “程序名”
  • 每一个论点
  • 空终止符
因此,对于命令行

-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_参数。

如果它们是标准
main
-类型的参数,下面是您需要的

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

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

  • “程序名”
  • 每一个论点
  • 空终止符
因此,对于命令行

-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\u参数。

但它们已在parse\u命令行()中定义。看看函数[link],我无法重新定义它们。我只是想用这些参数调用这个函数,但不知道怎么做。我不是C方面的专家。任何帮助都会很有用appreciated@wishee77对不起,也许我不太清楚。我使用的argc/argv是本地的,您只需将其传递给该函数。我将重命名本地函数以使其更清晰,并演示如何调用该函数。非常感谢。我将等待你的答复。我试图以不同的方式调用函数,但它不起作用。如果你能帮我的话,那就太好了。谢谢你的快速回复:)@wishee77,另一个误解,我想:-)我已经用这些更改更新了我的答案。你应该重读一遍。非常感谢你的快速回复。我按照你说的方式做了,但给出的错误是:svm train.c:在函数“int main(int,char**)”中:svm train.c:71:警告:从字符串常量到“char*”的转换不推荐使用,你知道为什么吗?但它们已经在parse_命令行()中定义了。看看函数[link],我无法重新定义它们。我只是想用这些参数调用这个函数,但不知道怎么做。我不是C方面的专家。任何帮助都会很有用appreciated@wishee77对不起,也许我不太清楚。我使用的argc/argv是本地的,您只需将其传递给该函数。我将重命名本地函数以使其更清晰,并演示如何调用该函数。非常感谢。我将等待你的答复。我试图以不同的方式调用函数,但它不起作用。如果你能帮我的话,那就太好了。谢谢你的快速回复:)@wishee77,另一个误解,我想:-)我已经用这些更改更新了我的答案。你应该重读一遍。非常感谢你的快速回复。我按照你说的方法做了,但是它的给出错误:svm train.c:在函数“int main(int,char**)”中:svm train.c:71:警告:从字符串常量到“char*”的转换不推荐使用,你知道为什么吗?