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