1. 程式人生 > >C語言命令列引數的使用

C語言命令列引數的使用

     之前曾經使用過很多次c語言的命令列引數了,但是總是每次使用的時候都不太確定,需要重新查資料,這次來個總結。c語言的命令列引數非常簡單,只需要一個簡單的例子就可以說明:

#include <stdio.h>
void main(int argc,char** argv)
{
        printf("%d\n",argc);
        printf("%s\n",argv[0]);
        printf("%s\n",argv[1]);
        printf("%s\n",argv[2]);
}

     在上面的例子中,我們給main函式傳遞兩個引數,argc和argv。argc是int型別的,它表示的是命令列引數的個數。不許要使用者傳遞,它會根據使用者從命令列輸入的引數個數,自動確定。argv是char**型別的,它的作用是儲存使用者從命令列傳遞進來的引數。它的第一個成員是使用者執行的程式名字。

     對於上面的例子,我們將其儲存為test.c,用gcc編譯生成目標檔案為test,測試如下:

     (1)我們值在命令列下直接執行程式,沒有傳遞其它任何引數:

./test

      執行結果如下:


     第一個輸出的是argc,因為我們只輸入了./test,所以argc為1,即只有一個命令列引數。後面輸出的第一個命令列引數也是./test。接著程式就出錯了,因為後面已經沒有第二個和第三個引數了,在寫實際的應用時,應注意對這一部分進行容錯處理。

     (2)我們在命令列下輸入:

./test hello world



     可以看到argc為3,第一個引數為./test,第二個引數為hello,第三個引數為world。

     (3)我們繼續輸入:

./test hello world hello world


     可以看到這時,argc變為5,argv指數出了前面三個引數,當然還可以把後面的兩個引數也進行輸出。

     如果命令列中傳遞的一個引數包括空格,就需要用用“ ”將引數擴起來例如:

./test "hello world" "hello world"


     我們將hello world整體當作一個引數傳遞,就需要使用“hello  world”。

     需要注意的是argv的型別可以是char ** argv,char argv[ ][ ],char* argv[ ]。