• QtCreator调试传入运行参数


    QtCreator是非常不错的IDE, 当需要在调试的时候为 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 内容是操作系统传入的环境变量字符串,同样是一个字符串数组。

    1、int main(int argc, char *argv[]):

    其中argv为指针的指针可以char **argv or: char *argv[] or: char argv[][]来表示,argc为整数

    2、具体用法看下面的例子:

    (1)假设程序的名称为program ,当执行程序时只输入./program,则由操作系统传来的参数为argc=1,表示只有程序名称,argv[0]指向输入的程序路径及名称。

    (2)当执行程序时输入./program -10,则由操作系统传来的参数为argc=2,表示除了程序名外还有一个参数,其中argv[0]指向输入的程序路径及名称,argv[1]=10;

    (3)当执行程序时输入./program -10,-a,则由操作系统传来的参数为argc=3,表示除了程序名外还有一个参数,其中argv[0]指向输入的程序路径及名称,argv[1]=10;argv[2]=a。

    总结:int main(int  argc, char *argv[] )  ,char  *argv[] :argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"/home/c/qt/test-build-desktop-Desktop_Qt_4_8_7_for_GCC__Qt_SDK__Release/test" 从二个元素(argv[1])开始,是每一个参数   int  argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名。

    以下提供一样例程序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: 


        ./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      /*视具体设置而定*/

      参考:https://blog.csdn.net/desert187/article/details/40781225

  • 相关阅读:
    vbox下安装centos (全部都是基于64位)
    用php获取js变量的值
    IOS开发帐号与发布问题综合
    深入理解那该死的BOM
    xcode的svn和git使用方法
    编程中神秘的引号(重要)
    photoshop cs6 Mac版本
    开源免费天气预报接口API以及全国所有地区代码!
    [C语言] 数据结构-预备知识指针
    [PHP] apache在worker模式配置fastcgi使用php-fpm
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/9428903.html
Copyright © 2020-2023  润新知