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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM