| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3476 人关注过本帖, 2 人收藏
标题:[转载]c语言中命令行参数
取消只看楼主 加入收藏
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
结帖率:100%
收藏(2)
 问题点数:0 回复次数:0 
[转载]c语言中命令行参数

c语言中命令行参数argc,argv
关键词: argc,argv
main(int argc,char **argv)
argv为指针的指针
argc为整数
char **argv or: char *argv[] or: char argv[][]
main()括号内是固定的写法。

下面给出一个例子来理解这两个参数的用法:

假设程序的名称为prog,

当只输入prog,则由操作系统传来的参数为:

argc=1,表示只有一程序名称。
argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog

当输入prog para_1,有一个参数,则由操作系统传来的参数为:

argc=2,表示除了程序名外还有一个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。

当输入prog para_1 para_2 有2个参数,则由操作系统传来的参数为:

argc=3,表示除了程序名外还有2个参数。
argv[0]指向输入的程序路径及名称。
argv[1]指向参数para_1字符串。
argv[2]指向参数para_2字符串。

在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语言 参数 命令 
2007-07-10 21:06
快速回复:[转载]c语言中命令行参数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026586 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved