在圖形介面普及前都是用命令列介面。命令列(command line)是在命令列環境中,使用者為執行程式輸入命令的行。命令列函式(command-line argument)是同一行的附加項。如下例是unix環境下的命令列:
$ fuss -r ginger
fuss就是命令列,後面的是命令列引數。例如在windows中常用的檢視ip位址的命令
c> ipconfig /all
ipconfig是命令列,後面的是引數。
乙個c程式可以讀取並使用這些附加項。
示例:
/* repeat.c -- main() with arguments */
#include
intmain
(int argc,
char
*ar**)
把該程式編譯為可執行程式repeat。下面是通過命令列執行該程式後的輸出:
$ ./repeat.exe resistance is futile
the command line has 3 arguments:
1: resistance
2: is
3: futile
我這裡的執行環境是windows下cygwin模擬的命令終端的執行結果。其他環境輸出結果是一樣的。
執行原理:
c編譯器允許main()函式沒有引數或兩個引數(一些實現允許main()有更多引數,屬於對標準的拓展)。main()有兩個引數,第乙個引數是命令列中的字串。過去,這個int型別的引數被稱為argc(表示引數計數(argument count))。系統用空格表示乙個字串的結束和下乙個字串的開始。
上面的程式的命令列有4個字串,第1個是命令名。後面3個是命令列引數,供repeat使用。main()的第2個引數,是指向指標的指標,稱為ar**(表示引數值(argument value)),他儲存了指向這4個字串的位址。如下
ar**[0] 指向 repeat(大部分系統而言)
ar**[1]指向 resistance
ar**[2]指向 is
ar**[3]指向 futile
main()中的形參形式與其他帶形參的函式相同,ar**也可以這樣宣告
int main(int arc, char **ar**);
另外,許多環境(包括unix和dos)都允許用雙引號把多個單詞括起來形成乙個引數。例如:
repeart "i am hungry" now
這行命令把 "i am hungry"賦值給ar**[1],把"now"賦給ar**[2]。
[1] 史蒂芬・普拉達. c primer plus (第6版) 中文版[m]. 人民郵電出版社, 2016.
C語言命令列引數
之前曾經使用過很多次c語言的命令列引數了,但是總是每次使用的時候都不太確定,需要重新查資料,這次來個總結。c語言的命令列引數非常簡單,只需要乙個簡單的例子就可以說明 cpp view plain copy include void main intargc,char argv 在上面的例子中,我們給...
C語言 命令列引數
可以通過main函式帶上兩個引數來獲取命令列的引數。argc 命令列引數的個數。argv 由命令列引數組成的字串陣列。include int main int argc,char argv return 0 編譯後執行結果 gcc test.c o test test a b c argv 0 te...
C語言命令列引數
執行程式時,可以從命令列傳值給 c 程式。這些值被稱為命令列引數,它們對程式很重要,特別是當您想從外部控制程式,而不是在 內對這些值進行硬編碼時,就顯得尤為重要了。命令列引數是使用 main 函式引數來處理的,其中,argc 是指傳入引數的個數,ar 是乙個指標陣列,指向傳遞給程式的每個引數。下面是...