2013-11-27 210 views
0

所以我的主要功能如下:如何將命令行參數傳遞給我的主函數?

int main(int numberOfArguments, char* argumentArray[]) { 
     if (assemble(numberOfArguments, argumentArray)) { 
       return 0; 
     } else { 
       return -1; 
     } 
} 

我希望能夠給到命令行的arguement

./program inputFile.txt outputFile.txt // PROBLEM IS that this is being interpreted as 3 command line arguments somehow when it is only 2. 

其中inputFile.txt是argumentArray [0]和outputFile.txt is argumentArray [1]

+0

什麼是你'assemble'?你的代碼已經能夠通過訪問你的numOfArgs和argArray來處理命令行參數。 – starrify

+0

你的程序存儲爲命令0,其餘的繼續這樣。所以是的解釋是正確的 – smac89

回答

0

從文本命令行生成參數是特定於平臺的,但argv數組的第一個元素幾乎總是用於查找程序的名稱。

如果你要放棄這個第一個參數,只需添加到main開頭:

-- numberOfArguments; 
++ argumentArray; 
0

您在命令行中鍵入的每個單詞(以可執行文件名開頭)都會在開始時傳遞給主函數。 related question

第一個參數argumentArray [0]是在保留的已完成問題中可讀的。 之後,您將在argumentArray中獲取每個單詞(由命令行中的空格分隔)作爲一個元素。

argumentArray的大小由numberOfArguments給出。所以如果你堅持讓你的輸入文件在[0]上,你應該使用一些像argumentArray ++這樣的指針算術;否則您將自動獲得[1]和[2]中的給定數據。

相關問題