您好,欢迎访问三七文档
main()与main(intargc,char*argv[])2008-11-2412:38:33分类:C/C++有些.exe程序可以带参数运行,比如:pinglocalhost-t。这里localhost,-t就是参数,main(intargc,char*argv[])就是为了让程序里面能使用参数,argc是argumentcount的缩写,表示参数的个数,argv是argumentvalue的缩写,表示参数的值,argv是一个字符指针数组,每一个元素指向一个字符串,其中argv[0]指向程序的路径名,argv[1]指向第一个参数字符串。需要注意的是,.exe程序的完整文件名也算在参数里面,所以pinglocalhost-t的argc是3。如果需要在程序里面使用这些参数的话,可以模仿下面的代码:intmain(intargc,char*argv[]){inti=0;printf(argc:%d\n,argc);for(i=0;iargc;i++){printf(Arg%d:%s\n,i+1,argv[i]);}return0;}程序运行结果是:argc:1Arg1:C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\a\Debug\a.exePressanykeytocontinue再看另一个例子:#includestdio.h#includestdlib.hintmain(intargc,char*argv[]){printf(argc=%d\nargv[0]=%s\n,argc,argv[0]);inta=0;intb=0;intc=0;intd=0;inte=0;intf=0;intg=0;inti=0;for(i=1;iargc;i++){if(*(argv[i])=='-'){switch(*(argv[i]+1)){case'a':a=atoi(argv[++i]);break;case'b':b=atoi(argv[++i]);break;case'c':c=atoi(argv[++i]);break;case'd':d=atoi(argv[++i]);break;case'e':e=atoi(argv[++i]);break;case'f':f=atoi(argv[++i]);break;case'g':g=atoi(argv[++i]);break;default:break;}}}printf(Thevalueofais%d\n,a);printf(Thevalueofbis%d\n,b);printf(Thevalueofcis%d\n,c);printf(Thevalueofdis%d\n,d);printf(Thevalueofeis%d\n,e);printf(Thevalueoffis%d\n,f);printf(Thevalueofgis%d\n,g);return0;}刚接触到这两个变量时,根本不知道它们是用来做什么的,我想很多人也跟我一样,刚看到这两个变量时也是稀里糊涂的。其实:intmain(intargc,char*argv[])是UNIX和Linux中的标准写法,而intmain()只是UNIX及Linux默许的用法..那究竟argc,argv[]有何之用呢?下面看个例子edit.c就会明白它们的用法了:#includeunistd.h#includestdio.hintmain(intargc,char*argv[]){if(argc==1||argc2){printf(请输入想要编辑的文件名如:./editfillen);}if(argc==2){printf(编辑%sn,argv[1]);}exit(0)}编译该程序:gcc-oeditedit.c运行:./edit结果:请输入想要编辑的文件名如:./editfille运行:./editedit.txt结果:编辑edit.txt看到这里argc,argv[]如何用就很明白了,argc是外部命令参数的个数,argv[]存放各参数的内容,如上例:执行./edit时,argc为1,argv[0]为./edit.而执行./editedit.txt时,argc的值为2,argv[0]为./edit,argv[1]为edit.txt.main()函数的几种参数类型:main()main(intargc)main(intargc,char*argv[])main(intargc,char*argv[],char*env[])其中第二种情况是合法的,但不常见,因为在程序中很少有只用argc,而不用argv[]的情况。*env:安符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量如PATH或87。以下提供一样例程序EXAMPLE.EXE,演示如何在main()函数中使用三个参数:/*programnameEXAMPLE.EXE*/#includestdio.h#includestdlib.hmain(intargc,char*argv[],char*env[]){inti;printf(Thesearethe%dcommand-lineargumentspassedtomain:\n\n,argc);for(i=0;i=argc;i++)printf(argv[%d]:%s\n,i,argv[i]);printf(\nTheenvironmentstring(s)onthissystemare:\n\n);for(i=0;env[i]!=NULL;i++)printf(env[%d]:%s\n,i,env[i]);}
本文标题:带参数的main
链接地址:https://www.777doc.com/doc-2450148 .html