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. 【每日Scrum】第四天(4.25) TD学生助手Sprint2站立会议

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 和小楠重写架构,使代码更加简洁,并增加了几个界面 今天增加了几个页面的子菜单,然后设计了几个要用的界面 遇到的困难是,菜单的事件处理真是神一样 ...

  2. React系列-ES6

    ES6新特性概览 React系列代码(非本人) 5 Projects to Help You Learn React 本人对javascript并不擅长,只是在工作中会时常用到,而且以jQuery居多 ...

  3. ETL Automation完整安装方法_(元数据存放在mysql数据库)

    安装前介质准备: DBI-1.636.tar.gz DBD-mysql-4.037.tar.gz ETL.tar mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz P ...

  4. wpf Style也继承(包含内部定义事件)

    如何在既定皮肤下为某个style添加内容是我今天碰的问题,皮肤往往是对全局control进行设置的,当然这就无法满足某个个性十足的“另类”了,比如当使用DataGridCheckBoxColumn时, ...

  5. 前端基础——CSS盒子模型

    如今很多网页都是由很多个"盒子"拼接.嵌套而成,所以多少接触过网页设计的朋友一定都对CSS盒子模型有所了解. 为了更好的说明,先举个通俗的样例:在一个仓库中放了10个纸箱,每一个纸 ...

  6. 1367: [Baltic2004]sequence

    1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MB Submit: 1090  Solved: 432 [Submit ...

  7. 九度OJ 1117:整数奇偶排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3174 解决:932 题目描述: 输入10个整数,彼此以空格分隔.重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到 ...

  8. 九度OJ 1095:2的幂次方 (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:913 解决:626 题目描述: Every positive number can be presented by the exponent ...

  9. 如何解决Apache无法启动的问题

    今天重装xampp后,一直无法启动Apache,提示以下错误: 22:36:54 [Apache] Attempting to start Apache app...22:36:54 [Apache] ...

  10. SDUT OJ 进制转换

    进制转换 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入一个十进制数N,将它转换成R进制数输出. 输入 输入数据包含多个测试实例,每个测试实例包含两个整 ...