int main(int argc,char* argv[])讲解

       

        分类:            学习笔记2354人阅读评论(0)收藏举报
dos编译器pathunixcommandc

     在最近学习中老是遇到  int main(int argc,char* argv[]),以为就是简单的参数应用了,但是看代码是没能理解参数的具体传递过程,上网找资料才算弄明白点,下面的一篇文章讲的很好很详细,大家可以根据自己的情况看看,资源充分利用嘛。(原文重复的地方已重新整理,无赘述)转自http://blog.csdn.net/lambol_8309/article/details/4524964

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

argc是命令行总的参数个数      argv[]是argc个参数,其中第0个参数是程序的全名(包括文件绝对路径),以后的参数命令行后面跟的用户输入的参数,比如:      int  main(int argc,  char* argv[])      {          int   i;          for (i = 0; i<argc; i++)               cout<<argv[i]<<endl;          cin>>i; 

       return   0;  

   }      执行时敲入      F:/MYDOCU~1/TEMPCODE/D1/DEBUG/D1.EXE   aaaa   bbb   ccc   ddd      输出如下:      F:/MYDOCU~1/TEMPCODE/D1/DEBUG/D1.EXE      aaaa      bbb      ccc      ddd   -------------------------------------------------------------------- argc记录了用户在运行程序的命令行中输入的参数的个数。   arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序文件所在的路径。 ------------------------------------------------------------------------- 在调用一个可执行程序时,某些情况下需要向程序传递参数。如我们可以在控制台中键notepad.exe,回车后将执行记事本程序。如果我们希望在打开notepad时同时打开一个文本文件,可以在notepad.exe 后面跟上文件的路径和名字,如notepad.exe example.txt(文件在当前路径)。        那么程序中如何能得到这些输入参数呢?这个工作是编译器帮我们完成的,编译器将输入参数的信息放入main函数的参数列表中。  main函数的参数列表保存了输入参数的信息,第一个参数argc记录了输入参数的个数,第二个参数是字符串数组的,字符串数组的每个单元是char*类型的,指向一个c风格字符串。      以notepad.exe   example.txt为例      argc是2,就是说argv数组中有两个有效单元      第一单元指向的字符串是"notepad.exe"      第二单元指向的字符串是"example.txt"          argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。          这个赋值过程是编译器完成的,我们只需要读出数据就可以了。 -----------------------------------------------------------------------------   int   argc      这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe      D:/tc2>test      这个时候,argc的值是1      但是      D:/tc2>test.exe   myarg1   myarg2  的话,argc的值是3。也就是命令名加上两个参数,一共三个参数          char   *argv[]      这个东东用来取得你所输入的参数      D:/tc2>test      这个时候,argc的值是1,argv[0]的值是   "test"      D:/tc2>test   myarg1   myarg2      这个时候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。      这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。      如:copy   a.c   b.txt      这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。      当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求          char   *envp[]      这个东东相对来说用得比较少。它是用来取得系统的环境变量的。      如:在DOS下,有一个PATH变量。当你在DOS提示符下输入一个命令(当然,这个命令不是dir一类的内部命令)的时候,DOS会首先在当前目录下找这个命令的执行文件。如果找不到,则到PATH定义的路径下去找,找到则执行,找不到返回Bad   command   or   file   name      在DOS命令提示符下键入set可查看系统的环境变量      同样,在UNIX或者LINUX下,也有系统环境变量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。      envp保存所有的环境变量。其格式为(UNIX下)      PATH=/usr/bin;/local/bin;      HOME=/home/shuui      即:      环境变量名=值      DOS下大概也一样。      环境变量一般用来为程序提供附加信息。如,你做了一个显示文本的内容的程序。你想控制其一行中显示的字符的个数。你可以自己定义一个环境变量(UNIX下)      %setenv   NUMBER   =   10      %echo   $NUMBER      10      然后你可以在程序中读入这个环境变量。然后根据其值决定一行输出多少个字符。这样,如果你不修改环境变量的话,你每次执行这个程序,一行中显示的字符数都是不一样的      下面是一个例子程序          /* argtest.c */      #include<stdio.h>      int main(   int   argc   ,   char   *argv[]   ,   char   *envp[]   )      {      int   i;          printf(   "You   have   inputed   total   %d   argments/n"   ,   argc   );      for(   i=0   ;   i<argc   ;   i++)      {      printf(   "arg%d   :   %s/n"   ,   i   ,   argv[i]   );      }          printf(   "The   follow   is   envp   :/n"   );      for(   i=0   ;   *envp[i]!='/0'   ;   i++   )      {      printf(   "%s/n"   ,   envp[i]   );      }      return   0;      }              D:/>argtest   this   is   a   test   programe   of   main()'s   argments      You   have   inputed   total   9   argments      arg0   :   D:/TC/NONAME.EXE      arg1   :   this      arg2   :   is      arg3   :   a      arg4   :   test      arg5   :   programe      arg6   :   of      arg7   :   main()'s      arg8   :   argments      The   follow   is   envp   :      TMP=C:/WINDOWS/TEMP      TEMP=C:/WINDOWS/TEMP      PROMPT=$p$g      winbootdir=C:/WINDOWS      PATH=C:/WINDOWS;C:/WINDOWS/COMMAND      COMSPEC=C:/WINDOWS/COMMAND.COM      SBPCI=C:/SBPCI      windir=C:/WINDOWS      BLASTER=A220   I7   D1   H7   P330   T6      CMDLINE=noname   this   is   a   test   programe   of   main()'s   argments     ----------------------------------------------------------------------------------------- 命令行参数啊。argc   是参数的个数,argv[]是参数,argv[0]是文件名,argv[1]是第一个参数...      如你得exe文件名是:myprog.exe,那么      myprog   12   22   32      则argv[0]="myprog",argv[1]="12",argv[2]="22"...          exit()是程序退出时的返回码。可以用其他程序接收,判断是否正常退出。如exit(-1)认为异常退出。

转载于:https://www.cnblogs.com/sxudk/p/3481107.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven实战(七)——常用Maven插件介绍(上)

我们都知道Maven本质上是一个插件框架&#xff0c;它的核心并不执行任何具体的构建任务&#xff0c;所有这些任务都交给插件来完成&#xff0c;例如编译源代码是由maven-compiler-plugin完成的。进一步说&#xff0c;每个任务对应了一个插件目标&#xff08;goal&#xff09;&a…

【设计模式之美】<Reading Notes>抽象类与接口

抽象类特性 1、抽象类不允许被实例化&#xff0c;只能被继承。 2、抽象类可以包含属性和方法。方法既可以包含代码实现&#xff0c;也可以不包含代码实现。不包含代码实现的方法叫做抽象方法。 3、子类继承抽象类&#xff0c;必须实现抽象类中的所有抽象方法。 接口特性 1、…

多线程之间共享数据的实现

1&#xff1a;如果每个线程执行的代码相同&#xff0c;可以使用同一个Runnable对象&#xff0c;然后将共享的数据放在Runnable里面&#xff0c;来实现数据的共享。 例如买票系统... package com.cn.gbx;import java.util.Date; import java.util.Random; import java.util.Time…

AIX的完整形式是什么?

AIX&#xff1a;高级交互式主管 (AIX: Advanced Interactive Executive) AIX is an abbreviation of "Advanced Interactive Executive". AIX是“ Advanced Interactive Executive”的缩写 。 It is a progression sequence of proprietary UNIX operating systems …

c#生成随机字符串 用做批量申请账号时的随机密码还是相当不错的

//随机字符串生成器的主要功能如下&#xff1a; //1、支持自定义字符串长度 //2、支持自定义是否包含数字 //3、支持自定义是否包含小写字母 //4、支持自定义是否包含大写字母 //5、支持自定义是否包含特殊符号 //6、支持自定义字符…

【C++基础】C++11的noexcept声明符 与 异常传播

目录C noexcept&#xff1a;1、用途2、用法1、noexcept声明符的用法&#xff1a;2、noexcept运算符的用法异常传播1、异常传播的定义2、异常传播中的规则3、异常传播的代价C noexcept&#xff1a; 1、用途 C11使用noexcept指明函数是否抛出异常&#xff1a; 若函数不抛异常&a…

使用IndexReader.repen提高搜索速度

1,使用indexreader创建indexsearcher. 2,indexsearcher在使用完了以后不要关闭. 3.使用indexreader.isCurrent()判断索引是否被indexwriter改动. 4,如果索引被改动,indexsearcher.close()先前那个,然后new indexsearcher(indexreader). 传string给searcher,searcher会维护一个内…

CSS中的文本格式

CSS文字格式 (CSS text formatting) CSS text properties allow you to style your text in various ways very easily. Such as color, alignment, spacing, direction, etc. CSS文本属性使您可以轻松地以各种方式设置文本样式。 例如颜色 &#xff0c; 对齐方式 &#xff0c;…

【C++基础】重抛异常与异常的使用场景

重抛异常 异常处理程序可以重新抛出异常。 当它无法处理该异常&#xff0c;或想通知它的调用者发生了一个异常&#xff0c;此时就需要重抛异常&#xff1a; 1、抛出捕获的异常 try {// statements; } catch (TheException &ex) {// Do something;throw; }2、重新抛出另一…

vi @-function

vi 的功能 vi 是一个越用越强大的东西 功能&#xff1a; 例&#xff1a; 1 在插入模式 cwgadfly CTL-V ESC 看到的似&#xff1a; cwgadfly^[ 2 保存到g缓冲区 ESC :退出插入模式 "gdd :"g 指缓冲去个 dd删除一行 这样g缓冲去的内容是 cwgadflayESC 3 test love u 在…

CSS简写指南

1.margin 1.1 margin:1px 2px 3px(上 左右 下) 1.2 margin:2px 3px(上下 左右) 1.2 margin:1px 3px 2px 3px(上右下左) 2.padding(同上) 3.border border:1px red solid (border-width border-color border-style) 1 2 3border-width&#xff1a;1px 2px 3px; //最多可用四个值…

【C++基础】模板基础与函数模板

目录初识模板函数模板函数模板实例化显式实例化隐式实例化初识模板 求两个int、float、char类型的数据的最大值&#xff1a; C里面要这样写&#xff1a; int maxInt(int x, int y); double maxDouble(double x, double y); char maxChar(char x, char y);C使用函数重载&#…

scala 函数中嵌套函数_Scala合成函数

scala 函数中嵌套函数Scala中的合成功能 (Composition function in Scala) Scala composition function is a way in which functions are composed in program i.e. mixing of more than one functions to extract some results. In Scala programming language, there are mu…

js--基础

js 0为false 非0为true null为false 非null为true js 特有with(对象){}:可以确定对象所使用的范围。for(变量 in 对象)对变量和和行为进行遍历html xhtml xml &#xff1a;这些都是标记型文档。DOM:document object model 文档对象模型。 dom三层模型&#xff1a; dom1:将…

字符串的处理[C#]

//string Str1 "友情相逢"; //string Str2 "用一生爱你"; //#region char的使用 //char a a; //Console.WriteLine("IsLetter方法判断a是否为字母&#xff1a;{0}", Char.IsLetter(a)); …

CentOS安全设置

CentOS安全设置 删除多余的用户和用户组&#xff0c;修改口令文件属性&#xff0c;禁止[CtrlAltDelete]重启命令&#xff0c;防止别人ping的方法。整理自互联网。1、删除多余的用户和用户组//删除多余用户# vi /etc/passwduserdel admuserdel lpuserdel syncuserdel shutdownus…

【设计模式之美】<Reading Notes>继承与组合

继承缺点 继承是面向对象的四大特性之一&#xff0c;用来表示类之间的 is-a 关系&#xff0c;可以解决代码复用的问题。虽然继承有诸多作用&#xff0c;但继承层次过深、过复杂&#xff0c;也会影响到代码的可维护性。在这种情况下&#xff0c;我们应该尽量少用&#xff0c;甚至…

scala中何时使用下划线_在Scala中使用下划线

scala中何时使用下划线Underscore (_) character is reserved in Scala and has multiple usages in the programming language. Based on functions that use the underscore have the following usages: 下划线(_)字符在Scala中保留&#xff0c;并且在编程语言中有多种用法。…

如何利用C#编写网页投票器程序 如何使用代理来投票 代理IP来投票

一、前言看个图&#xff0c;了解下投票的过程。提交投票信息投票页 ――――――――&#xff1e;投票信息处理页反馈投票结果(请求页)&#xff1c;―――――――(响应页&#xff09;一般情况下&#xff0c;填写投票信息&#xff0c;然后点提交按钮发送到响应页&#xff0c;这…

【设计模式之美】<Reading Notes>贫血模型与充血模型

小知识 需要了解的一些名词 1、领域驱动设计&#xff08;Domain Driven Design&#xff0c;简称 DDD&#xff09; 2、MVC 三层架构 &#xff1a; M 表示 Model&#xff0c;V 表示 View&#xff0c;C 表示 Controller。 它将整个项目分为三层&#xff1a;展示层、逻辑层、数据层…