2013-10-07 48 views
-4

我明白argv和argc做了什麼以及它們如何使用,但我需要重新創建它們。在C中,你將如何編寫一個函數來模仿它們。如何編寫「argv」和「argc」

+2

你有沒有感覺到'argv'和'argc'只是魔術變量?像perl的'ARGV'? – P0W

+0

'argv'是一個字符串數組(字符指針數組),'argc'是該數組的長度。因此重新創建它們只是製作一系列字符串的問題。你想用'argc'和'argv'做什麼? – Kninnug

+0

閱讀[如何使用argv和argc](http://stackoverflow.com/questions/19108368/segmentation-fault-with-strcmp/19108878#19108878) –

回答

1

argcargv用於從命令行啓動程序或想要將某些變量傳遞給程序。
argc包含參數的個數,argv是指向字符串參數的指針數組。
這些參數主要是

main(int argc, char** argv) 

語法char** argv聲明argv是一個指針的指針到一個字符,即,一個指向字符陣列(字符串) - 換句話說,一串字符串。您也可以將其寫爲char* argv[]

運行程序時,數組argv按順序包含命令行中輸入命令時的所有信息(字符串由空格標示),包括命令本身。整數argc給出了字符串的總數,因此等於參數個數加1。例如,如果您鍵入

a.out -i 2 -g -x 3 4 

的方案將得到

argc = 7 
argv[0] = "a.out" 
argv[1] = "-i" 
argv[2] = "2" 
argv[3] = "-g" 
argv[4] = "-x" 
argv[5] = "3" 
argv[6] = "4" 
+0

好的,假設在我的程序中我需要類似的東西。 第一條命令很明顯是什麼啓動程序,以下參數是該命令的變量。 – confusedProgrammer

+0

@ user2808307;更新了我的答案。 – haccks

0

在C和C++,主要功能的函數原型如下:

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

你不能重建他們,但你可以改變他們的名字。

在你的主,你可以輸入int main(int numberOfArguments, char *arrayOfArguments[])和使用numberOfArgumentsargcarrayOfArgumentsargv

3

您只需創建一個數組來存儲要傳入的參數argv,並相應地設置argc,類似於;

int argc = 3; 
char* argv[argc + 1]; 

argv[0] = "binary name"; 
argv[1] = "first parameter"; 
argv[2] = "second parameter"; 
argv[3] = NULL; 

int result = main(argc, argv); 
+0

我不知道我會有多少argc,它會被用戶讀入,並且它們不應該有空格。 所以我知道我需要一個字符串數組。 我尋找類似 INT主(){ 字符*命令[100] INT CNUM = 30; getCommand(command,cNum); ! 而(的strcmp(命令[0], 「退出」))= 0){// 做任何 } 返回0; } 無效getCommand(命令,CNUM){// 做一些 } – confusedProgrammer

+0

@ user2808307我會建議你看看'stdarg.h' – Arpit

+0

@Arpit - 是在C,沒有用C++。 –