linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C常用算法程序实例-线性代数方
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·C++入门经典教程完全版01-引言
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
C/C++中命令行参数的原理
[ 作者:  加入时间:2007-10-23 14:07:35  来自:Linux联盟收集整理 ]
早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: 5uQLinux联盟
5uQLinux联盟
copy c:\1.txt d:\ 5uQLinux联盟
5uQLinux联盟
在c/c++中,命令行参数的传递是利用main进行形参传递实现的 5uQLinux联盟
5uQLinux联盟
前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来。 5uQLinux联盟
5uQLinux联盟
为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式进行定义argc和argv可以换成你自己喜欢的名称不一定要用argv,argc这些形式只是习惯而已,char* argv[]我们前面已经讲述过,这就是一个指向指针数组,argv就是一个指针数组名,argv不是常量指针,而是具备变量特性的变量指针,它是可以移动的,由此我们可以改写成char* *argv也是正确的,int argc这个定义返回的将是参数的个数所以标记为整形(int)。 5uQLinux联盟
5uQLinux联盟
5uQLinux联盟
//程序作者:管宁 5uQLinux联盟
//站点:www.cndev-lab.com 5uQLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 5uQLinux联盟
5uQLinux联盟
#include <iostream>5uQLinux联盟
#include <string>5uQLinux联盟
usingnamespacestd; 5uQLinux联盟
5uQLinux联盟
voidmain(intargc,char* argv[]) 5uQLinux联盟
{ 5uQLinux联盟
inti=0; 5uQLinux联盟
while(i<argc) 5uQLinux联盟
{ 5uQLinux联盟
cout<<*argv++<//这里改写成cout<5uQLinux联盟
i++; 5uQLinux联盟
} 5uQLinux联盟
cin.get(); 5uQLinux联盟
} 5uQLinux联盟
5uQLinux联盟

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

5uQLinux联盟
//程序作者:管宁 5uQLinux联盟
//站点:www.cndev-lab.com 5uQLinux联盟
//所有稿件均有版权,如要转载,请务必著名出处和作者 5uQLinux联盟
5uQLinux联盟
#include <iostream>5uQLinux联盟
#include <string>5uQLinux联盟
usingnamespacestd; 5uQLinux联盟
5uQLinux联盟
voidmain(intargc,char* argv[]) 5uQLinux联盟
{ 5uQLinux联盟
while(*argv!=NULL)//这里写成while(*argv)也是正确的! 5uQLinux联盟
{ 5uQLinux联盟
cout<<*argv++<} 5uQLinux联盟
cin.get(); 5uQLinux联盟
} 5uQLinux联盟
5uQLinux联盟
5uQLinux联盟
5uQLinux联盟
最后我们说一下完整的命令行参数的原形:void main(int argc,char* argv[],char* env[]) 5uQLinux联盟
5uQLinux联盟
env用的很少,通常是用做事件的返回,这里就不讨论了,具体的可以查询书籍。 5uQLinux联盟
5uQLinux联盟
void main(int argc)省略其它参数的定义也是可以的,这样运行时候就直接返回参数个数学,而不返回其它。 5uQLinux联盟
5uQLinux联盟
运行命令行参数带有char* argv[]的时候,如果输入参数带有空格式,应该用双引号阔起来。 5uQLinux联盟
5uQLinux联盟
例如 test4.exe "hello world!" ha ha

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息