| 订阅 | 在线投稿
分享
 
 
 

C/C++中命令行参数的原理

来源:互联网  宽屏版  评论
2008-06-01 02:03:49

很早以前的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>

using namespace std;

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

{

int i=0;

while(i<argc)

{

cout<<*argv++<<endl;//这里改写成cout<<argv[i]<<endl;也是正确的

i++;

}

cin.get();

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

#include <string>

using namespace std;

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

{

while(*argv!=NULL)//这里写成while(*argv)也是正确的!

{

cout<<*argv++<<endl;

}

cin.get();

} 最后我们说一下完整的命令行参数的原形:void main(int argc,char* argv[],char* env[])

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

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

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

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

C/C++中命令行参数的原理
更多内容请看C/C++技术专题 linux命令简介专题,或

 
  很早以前的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> using namespace std; void main(int argc,char* argv[]) { int i=0; while(i<argc) { cout<<*argv++<<endl;//这里改写成cout<<argv[i]<<endl;也是正确的 i++; } cin.get(); }   在命令行参数的提交中,系统会自动给指针数组后加上一个NULL,所以代码可以写成如下简单形式,简化代码提高效率。#include <iostream> #include <string> using namespace std; void main(int argc,char* argv[]) { while(*argv!=NULL)//这里写成while(*argv)也是正确的! { cout<<*argv++<<endl; } cin.get(); }   最后我们说一下完整的命令行参数的原形:void main(int argc,char* argv[],char* env[])   env用的很少,通常是用做事件的返回,这里就不讨论了,具体的可以查询书籍。   void main(int argc)省略其它参数的定义也是可以的,这样运行时候就直接返回参数个数学,而不返回其它。   运行命令行参数带有char* argv[]的时候,假如输入参数带有空格式,应该用双引号阔起来。   例如 test4.exe "hello world!" ha ha [url=http://www.wangchao.net.cn/bbsdetail_1785277.html][img]http://image.wangchao.net.cn/it/1323424040211.gif[/img][/url] 更多内容请看C/C++技术专题 linux命令简介专题,或
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有