最近更新:26th 4月, 2015
开始
int main(int argc, const char * argv[])
在学习C语言的时候,大家都是编写一个程序,然后在终端运行查看结果,输入数字等等……不知道大家有没有尝试过让你编写的程序能够像系统命令那样接受参数呢?比如说:ls -al这样子。
如果想的话,就像上文那样来声明吧!
其中:
argv: 指针的指针
argc: 整数
举个栗子
假设程序的名称为test,当只输入test,则由操作系统传来的参数为:
argc = 1,表示只有一程序名称;
argc只有一个元素,argv[0]指向输入的程序路径及名称:./ test
当输入test para_1,有一个参数,则由操作系统传来的参数为:
argc = 2,表示除了程序名外还有一个参数;
argv[0]指向输入的程序路径及名称;
argv[1]指向参数para_1字符串
当输入test para_1 para_2 有2个参数,则由操作系统传来的参数为:
argc = 3,表示除了程序名外还有两个参数;
argv[0]指向输入的程序路径及名称;
argv[1]指向参数para_1字符串;
argv[2]指向参数para_2字符串;
so,以此类推~
结合实际栗子来讲:
1
intmain(intargc,constchar*argv[])
char *argv[]: argv是一个指针数组,元素个数是argc,存放的是指向每一个参数的指针,第一个元素即argv[0]为程序运行的全路径名,从二个元素(argv[1])开始,是每一个参数的名称,最后一个元素为NULL。总的来说,即:
* argv: 字符串数组
argv[0] 为程序运行的全路径名
argv[1] 为执行程序名后的第一个字符串;
argv[2] 为执行程序名后的第二个字符串;
…
argv[argc]为NULL。
int argc: 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*program name EXAMPLE.EXE*/
#include
#include
main(intargc,char*argv[],char*env[])
{
inti;
printf("These are the %d command- line arguments passed to
main:\n\n",argc);
for(i=0;i<=argc;i++)
printf("argv[%d]:%s\n",i,argv[i]);
printf("\nThe environment string(s)on this system are:\n\n");
for(i=0;env[i]!=NULL;i++)
printf(" env[%d]:%s\n",i,env[i]);
}
./EXAMPLEfirst"I’m a good boy"c"last "stop
//注意: 可以用双引号括起内含空格的参数, 如本例中的: " argument with blanks"和"Last but one")。
//结果是这样的:
Thesearethe6command-lineargumentspassedtomain:
argv[0]:./EXAMPLE
argv[1]:first
argv[2]:I’magoodboy
argv[3]:c
argv[4]:last
argv[5]:stop
argv[6]:(NULL)
本文内容参考自这里。