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