zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/9428903.html
Copyright © 2011-2022 走看看