QtCreator是非常不错的IDE,最近在做的Qt命令行应用,因为调试的环境不同等问题,需要在调试的时候为 main() 传入参数。度娘了半天,没找到方法,只能自力更生。后来在“项目-构建和运行-运行”下找到了。

如果想在调试时为 main() 传入参数,只要将参数输入到上图红线中的“参数”栏即可。

这里对 main() 函数及其参数简单介绍一下。

C语言的 main() 可以有以下几种写法:

1. int mian(void)

2. int main(int argc)

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

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

另外也有其他一些不太符合标准、不常见的写法。关于main() 的写法问题可以参见《你所未必了解的main()函数的事情》一文。

上面 4 种写法中,1 和 3 较为常见,由于 argc 和 argv 通常搭配使用,所以方法 2 不常使用,方法 4 并不是所有编译器都支持,所以也很少使用。

根据 C99 标准,main() 函数必须有 int 类型的返回值,不写返回值或者返回值为 void 类型都是不建议的,虽然有些编译器还支持这类写法。

同样,一定要为 main() 指明参数类型 ,如果没有参数要在括号内填写 void ,不可留空。

参数 argc 代表了输入参数个数,操作系统为 mian() 传入的 argc  至少为1,其值为该应用程序的名字;

参数 argv 表示传入参数的字符串,是一个字符串数组;

参数 env 内容是操作系统传入的环境变量字符串,同样是一个字符串数组。

以下提供一样例程序EXAMPLE.EXE,  演示如何在main()函数中使用三个参数:

/*program name EXAMPLE.EXE*/ 
     #include <stdio.h> 
     #include <stdlib.h> 
     main(int argc, char *argv[], char *env[]) 
     { 
          int i; 
          printf("These are the %d  command- line  arguments passed  to 
                  main:/n/n", argc); 
          for(i=0; i<=argc; i++) 
            printf("argv[%d]:%s/n", i, argv); 
          printf("/nThe environment string(s)on this system are:/n/n"); 
          for(i=0; env!=NULL; i++) 
               printf(" env[%d]:%s/n", i, env); 
     }

如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE:

C:/example first_argument "argument with blanks"  3  4  "last  but 
one" stop! 
    注意: 可以用双引号括起内含空格的参数, 如本例中的:   "  argument 
with blanks"和"Last but one")。 
    结果是这样的: 
     The value of argc is 7 
     These are the 7 command-linearguments passed to main: 
     argv[0]:C:/TURBO/EXAMPLE.EXE 
     argv[1]:first_argument 
     argv[2]:argument with blanks 
     argv[3]:3 
     argv[4]:4 
     argv[5]:last but one 
     argv[6]:stop! 
     argv[7]:(NULL) 
     The environment string(s) on this system are: 
     env[0]: COMSPEC=C:/COMMAND.COM 
     env[1]: PROMPT=$P$G            /*视具体设置而定*/ 
     env[2]: PATH=C:/DOS;C:/TC      /*视具体设置而定*/

本文示例来自于:http://www.programfan.com/blog/article.asp?id=39240

http://blog.csdn.net/desert187/article/details/40781225

Qt传入参数argc argv[]的更多相关文章

  1. Main函数中的参数argc,argv的使用简单解析

    本篇文章是对Main函数中的参数argc,argv的使用进行了简单的分析介绍,需要的朋友参考下: C/C++语言中的main函数,经常带有参数argc,argv,如下:  int main(int a ...

  2. main()中的参数argc, argv

    转自:http://blog.csdn.net/eastmount/article/details/20413773 一.main()函数参数 通常我们在写主函数时都是void main()或int ...

  3. 【转】 深入main函数中的参数argc,argv的使用详解

    C/C++语言中的main函数,经常带有参数argc,argv,如下: 复制代码 代码如下: int main(int argc, char** argv) 这两个参数的作用是什么呢?argc 是指命 ...

  4. c语言中命令行参数argc,argv[]详解

    main(int argc,char *argv[ ]) 1.argc为整数 2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[ ...

  5. 命令行参数(argc, argv)

    每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过两个入参提供给main()函数. ...

  6. c语言argc argv

    转载自 http://blog.csdn.net/yukiooy/article/details/4682989 main(int argc,char *argv[ ]) argv为指针的指针 arg ...

  7. main函数的参数argc和argv

    版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/20413773 该篇 ...

  8. (转)C++ main函数中参数argc和argv含义及用法

    原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: ...

  9. C++ main函数中参数argc和argv含义及用法

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

随机推荐

  1. 华为OJ 名字美丽度

    这是一道坑爹的题目,为什么这么说,且看我慢慢分析-- 题目例如以下: 给出一个名字,该名字有26个字符串组成,定义这个字符串的"美丽度"是其全部字母"美丽度"的 ...

  2. centos7下memcached的安装配置

    memcached 依赖 libevent-devel 首先安装libevent-devel yum -y install libevent-devel 安装完毕! 继续安装memcached yum ...

  3. ruby on rails模拟HTTP请求错误发生:end of file reached

    在文章 Ruby On Rails中REST API使用演示样例--基于云平台+云服务打造自己的在线翻译工具 中,利用ruby的Net::HTTP发起http请求訪问IBM Bluemix上的sour ...

  4. 什么是SDN(软件定义网络)(转载)

    软件定义网络(Software Defined Network, SDN)在InfoWorld于2011年11月公布的将影响未来10年的十项新技术中排名第二.2012年7月,SDN代表厂商Nicira ...

  5. NGUI研究之3D模型坐标转2D屏幕坐标-血条

     刚好今天有朋友问我,比較典型的样例就是游戏里面人物的血条. 原理非常easy就是把3D点换算成2D的点.可是因为NGUI自身是3D所以我们须要先把NGUI下的点转成2D点.然后在把他转成3D的点 ...

  6. Qt 5.5.0 Windows环境搭建

    1)訪问官方站点:http://www.qt.io/download-open-source/ 2)选择离线安装包 3)选择 Windows 离线安装包(32 位或 64 位都可用,Windows 6 ...

  7. Operation not permitted - /usr/bin/pod

    问题描述:执行sudo gem install cocoapods, 提示出错:While executing gem ... (Errno::EPERM)     Operation not per ...

  8. 九度OJ 1123:采药 (01背包、DP、DFS)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2705 解决:1311 题目描述: 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师. 为此,他想拜附近最有威望的医师为师 ...

  9. Java NIO 粘包 拆包 (实战) - 史上最全解读

    疯狂创客圈 Java 聊天程序[ 亿级流量]实战系列之13 [博客园 总入口 ] 本文的源码工程:Netty 粘包/半包原理与拆包实战 源码 本实例是<Netty 粘包/半包原理与拆包实战> ...

  10. Boosting AdaBoosting Algorithm

    http://math.mit.edu/~rothvoss/18.304.3PM/Presentations/1-Eric-Boosting304FinalRpdf.pdf Consider MIT ...