我正在尝试使用这些值初始化 *argv:test_file 模型结果 谁能帮助我如何直接初始化 argv 而不是使用命令行。我这样做是这样的:
*argv[]= {"test_file","model","output",NULL};
但它不工作。我知道它很简单,但我是编程新手。谁能帮我?
我正在尝试使用这些值初始化 *argv:test_file 模型结果 谁能帮助我如何直接初始化 argv 而不是使用命令行。我这样做是这样的:
*argv[]= {"test_file","model","output",NULL};
但它不工作。我知道它很简单,但我是编程新手。谁能帮我?
char* dummy_args[] = { "dummyname", "arg1", "arg2 with spaces", "arg3", NULL };
int main( int argc, char** argv)
{
argv = dummy_args;
argc = sizeof(dummy_args)/sizeof(dummy_args[0]) - 1;
// etc...
return 0;
}
要注意的一件事argv
是允许修改标准字符串。这些替换的不能是(它们是文字)。如果您需要该功能(许多选项解析器可能需要),您将需要一些更智能的东西。也许是这样的:
int new_argv( char*** pargv, char** new_args)
{
int i = 0;
int new_argc = 0;
char** tmp = new_args;
while (*tmp) {
++new_argc;
++tmp;
}
tmp = malloc( sizeof(char*) * (new_argc + 1));
// if (!tmp) error_fail();
for (i = 0; i < new_argc; ++i) {
tmp[i] = strdup(new_args[i]);
}
tmp[i] = NULL;
*pargv = tmp;
return new_argc;
}
像这样调用它:
argc = new_argv( &argv, dummy_args);
或者简单地说,这行得通吗(抱歉晚了3年;))?
int argc ;
char * argv[3] ;
char p1[16] ;
char p2[16] ;
char p3[16] ;
memcpy ( p1, "mainwindow", 9 ) ;
memcpy ( p2, "–SizeHint5", 10 ) ;
memcpy ( p3, "120x240", 7 ) ;
argc = 3 ;
argv[0] = p1 ;
argv[1] = p2 ;
argv[2] = p3 ;
QApplication app(argc, argv);
像这样的初始化仅在声明时可用,并且(大概)您已将 argv 声明为函数的参数(main
我假设)。在这种情况下,您必须单独分配每个。
为了符合较新的编译器,我会这样做(只要您不想更改字符串):
char* argv[] = {const_cast<char*> ("program_name"),
const_cast<char*> ("-arg1"),
const_cast<char*> ("string_to_arg1"),
const_cast<char*> ("-arg2"),
const_cast<char*>("-arg3"),
NULL};
int argc = sizeof (argv) / sizeof (char*) - 1;
QApplication app(argc, argv);