赛迪网 > IT技术 C/C++ > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

编程导学之C/C++中命令行参数的原理

发布时间:2006.04.10 01:20     来源:赛迪网社区    作者:管宁

早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如:

copy c:\1.txt d:\

在c/c++中,命令行参数的传递是利用main进行形参传递实现的

前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来。

为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式进行定义argc和argv可以换成你自己喜欢的名称不一定要用argv,argc这些形式只是习惯而已,char* argv[]我们前面已经讲述过,这就是一个指向指针数组,argv就是一个指针数组名,argv不是常量指针,而是具备变量特性的变量指针,它是可以移动的,由此我们可以改写成char* *argv也是正确的,int argc这个定义返回的将是参数的个数所以标记为整形(int)。

#include <iostream>
#include <string>
usingnamespacestd; 

voidmain(intargc,char* argv[]) 
{ 
inti=0; 
while(i<argc) 
{ 
cout<<*argv++<//这里改写成cout<
i++; 
} 
cin.get(); 
}

在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以代码可以写成如下简单形式,简化代码提高效率。

#include <iostream>
#include <string>
usingnamespacestd; 

voidmain(intargc,char* argv[]) 
{ 
while(*argv!=NULL)//这里写成while(*argv)也是正确的! 
{ 
cout<<*argv++<} 
cin.get(); 
}

最后我们说一下完整的命令行参数的原形:

void main(int argc,char* argv[],char* env[])

env用的很少,通常是用做事件的返回,这里就不讨论了,具体的可以查询书籍。

void main(int argc)省略其它参数的定义也是可以的,这样运行时候就直接返回参数个数学,而不返回其它。

运行命令行参数带有char* argv[]的时候,如果输入参数带有空格式,应该用双引号阔起来。

例如 test4.exe "hello world!" ha ha

(T113)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· C/C++中多维数组指针作为函数参数传递! (04-07) · Netbeans 将提供更为强大的C/C++支持 (03-28)
· 简化之道 网络参数设置切换全接触二 (02-10) · 了解路由器中的管理间距和量度参数 (02-10)
· 了解路由器中的管理间距和量度参数 (02-10) · Linux上搭建C/C++IDE开发环境 (02-08)
· 编程初级班:C语言程序设计入门系列之一 (05-19) · 详细解析C++编写的ATM自动取款机模拟程序 (05-19)
· C++编程中的四个调试小技巧 (05-18) · Windows下C语言网络编程快速入门 (05-18)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管