有些.exe程序可以带参数运行,比如:ping localhost -t。
这里localhost,-t就是参数,main(int argc, char *argv[])就是为了让程序里面能使用参数,argc是argument count的缩写,表示参数的个数,argv是argument value的缩写,表示参数的值,argv是一个字符指针数组,每一个元素指向一个字符串,其中argv[0]指向程序的路径名,argv[1]指向第一个参数字符串。
需要注意的是,.exe程序的完整文件名也算在参数里面,所以ping localhost -t的argc是3。
如果需要在程序里面使用这些参数的话,可以模仿下面的代码:
{
int i = 0;
printf("argc: %d/n", argc);
for(i = 0; i < argc; i++)
{
printf("Arg %d : %s/n", i + 1, argv[i]);
}
return 0;
}
程序运行结果是:
Arg 1 : C:/Program Files/Microsoft Visual Studio/MyProjects/a/Debug/a.exe
Press any key to continue
|
其实: int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法..
那究竟 argc,argv[] 有何之用呢?下面看个例子 edit.c 就会明白它们的用法了:
#include<unistd.h>
#include<stdio.h>
int main(int argc,char *argv[])
{
if(argc==1 || argc>2) {
printf("请输入想要编辑的文件名如:./edit fillen");
}
if(argc==2) {
printf("编辑 %sn",argv[1]);
}
exit(0)
}
编译该程序:gcc -o edit edit.c
运行:./edit
结果:请输入想要编辑的文件名如:./edit fille
运行:./edit edit.txt
结果:编辑 edit.txt
看到这里 argc,argv[] 如何用就很明白了,
main(int argc)
main(int argc, char *argv[])
main(int argc, char *argv[], char *env[])
其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
用argv[]的情况。
*env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量如PATH或87。以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
/*program name EXAMPLE.EXE*/
#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[], char *env[])
{
int i;
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]);
}