2013-10-07 46 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++。 –