2010-03-29 26 views
3

我想從一個單獨的二進制代碼中移動一些代碼並將其放在我的主程序中。不幸的是,我不能模仿主函數的初始化變量。如何去除主要功能的頭部?

如何手動創建argcargv?有人可以給我一些例子的作業。

,因爲它看起來是這樣的:

int main(int argc, char *argv[]) 

我想我可以爲它們分配是這樣的:

int argc=1; 
char *argv[0]="Example"; 

但它不工作。誰能告訴我這可能是怎麼完成的?

+2

你說什麼應該工作。你能發表一些你真正在做什麼的代碼嗎? – pajton 2010-03-29 17:12:08

+2

您能否提供更完整的代碼示例?你如何「移動」功能? – 2010-03-29 17:12:29

+4

你需要爲你的argv數組分配空間,一個指針值空間,所以應該是char * argv [1] = {「Example」};' – falstro 2010-03-29 17:14:09

回答

6
int argc = 3; 
char *argv[4]; 
argv[0] = "fake /path/to/my/program"; 
argv[1] = "fake arg 1"; 
argv[2] = "fake arg 2"; 
argv[3] = NULL; 
fakemain(argc, argv); 
+1

..或者只是'char * argv [4] = {「fake/path/to/my/program」,「fake arg 1」,「fake arg 2」,NULL}'爲您節省一些房地產。 – falstro 2010-03-29 20:23:42

1

argv[]數組的最後一個元素實際上是argv[argc]這是一個NULL指針。

一些示例代碼:

char *argv[] = { "first", "second", NULL }; 
int argc = sizeof(argv)/sizeof(*argv) - 1; 
1

斷頭臺通常工作。問法國人。

+1

如果你倒退你是一個反革命! – Malfist 2010-03-29 17:52:50

0

你爲什麼要這樣做?如果你使用IDE,那麼它會有一個選項來添加命令行選項。如果你直接調用這個程序然後用命令選項調用它