[Powered by Google Translate] [命令行參數] 克里斯托弗·巴塞洛繆 - 哈佛大學] [這是CS50 - CS50.TV] 一個程序一個有用的功能是接受用戶的輸入。 到目前為止,我們已經探討了一些功能在CS50庫 來接受用戶輸入,如“字符串,” 它提示用戶,應用程序正在運行時,為一個字符串。 然而,在某些情況下,你要提供你的程序輸入 它實際上是在運行。 通過這種方式,你不必問從用戶的其他信息 在執行一個簡單的任務。 舉個例子,在UNIX的MV或移動命令。 該命令允許用戶將一個文件從一個位置到另一個。 根據手冊頁,MV接受兩個命令行參數: 正在被移動的文件和該文件的位置被移動到。 因此,這個例子中有一個命令有兩個參數。 那麼,我們如何告訴我們的C程序來使用這些命令行參數? 哦,原來是主要的,這是我們在所有的C程序中使用,有一個秘密。 主要有兩個參數:argc和argv。 讓我們對這些條款。 第一個參數是argc,它代表的參數計數, 有一個數據類型的整數。 argc參數包含參數的個數,包括命令。 在我們的移動命令,雖然我們只有兩個參數顯示, ARGC的值將是3。 第二個參數,argv的,它代表的參數向量, 是指向字符串的字符指針數組。 這意味著,每個元素在argv,從零開始, 包含的命令和參數。 例如,ARGV [0],我將把為ARGV零, 總是包含正在運行的命令 - 在這種情況下,毫伏。 ARGV [1]將包含第一個參數,file.txt的, 和argv [2]將包含第二個參數,〜/ CS50 /。 最後一個參數argv的永遠是空的。 因此,讓我們執行這些命令行參數。 在前面的練習中,我們把無效的,沒什麼意思,作為主要的參數。 然而,為了使用命令行參數, 我們需要刪除無效和地點內的主要詮釋argc,焦炭*的argv []。 現在,訪問整個從argv元素,這是你的論點, 你可以簡單地重複,循環,通過這樣的數組。 ,裡面的主的身體,我們要繼續前進,然後鍵入一個for循環: (INT I = 0;我ARGC,我+ +)。 我們不需要一個大括號,在這裡,因為我們只執行一行代碼 身體內的這個循環。 我們將繼續前進,一次打標籤, 然後輸入輸出(ARGV [D],代表一個整數值, 是%s,對於字符串,然後換行字符。 然後,我們提供printf i為循環的當前迭代 和argv [i]的當前命令行參數的字符串表示形式。 當我們運行它帶有兩個參數,我們可以看到在終端上顯示的參數。 剛才我們說的argv舉行的字符指針數組。 所以,如果是這樣的話,怎麼那麼,我們訪問每個參數的單個字符? 例如,如果我想尋找一個特定的字符中的第一個參數呢? 那麼,答案是,我們需要申請一個嵌套循環 在參數字符串中的每一個元素,然後遍歷。 這是你如何做到這一點。 首先,我們要去副本的example2.c的。 然後,在第一個for循環, 我們要添加一個額外的循環。 因此,對於(J = 0,N = strlen的(的argv []) 然後給了我們當前參數的長度, J 。 所以,讓我們編譯和運行,並為它提供的實際參數。 而且,我們可以看到,我們現在已經在參數的確切位置,每個單獨的字符。 所以,就是這樣。我是克里斯托弗·巴塞洛繆,這是CS50。 [CS50.TV]