2013-10-11 17 views
0

假設我想通過命令(使用argc和argv)打開該程序。你得到你的程序名稱,打開程序。它給你的.exe。然後,一旦你的program.exe運行,添加另一個參數,如(program.exe打開),它應該在你的程序中打開一些東西。打開通過命令參數執行某些操作的函數

if (argc >= 5){ 
    if (int(argv[1]) == 1){ 
     function1(); 
     function2(); 
     function3(); 

    } 

} 

基本上在這種情況下,如果用戶輸入program.exe 1,(1是本例中的開頭),它應該執行以下功能。爲什麼這在邏輯上不正確? (因爲其中沒有顯示)

+0

一開始,'的Program.exe 1'不會導致'ARGC> = 5' ... –

回答

0

因爲int(argv[1])"1"不轉換爲int1。試試這個:

if (argv[1][0] == '1') { 
+0

當然,如果的argv [1]正好是 「10」 這可能沒有做什麼要求 – doctorlove

2

你需要的是這樣的:

if (argc >= 2){ // the argc is count of supplied argument 
       // including executable name 
    if ((argv[1][0]-'0') == 1){ 
     //argv[1] will be "1" 
     //so take first character using argv[1][0]--> gives '1'-->49 
     //substract ASCII value of 0 i.e. 48 
     //Note: - This will only work for 0-9 as supplied argument 
     function1(); 
     function2(); 
     function3(); 

    } 

} 
+0

事實上,但不是非常可擴展的(從輸入值大於9的時候這會破壞)... –

1

你的argv轉換[1]爲int不起作用。你可以使用atoi()

if (argc >= 2){ 
    if (atoi(argv[1]) == 1){ 
     function1(); 
     function2(); 
     function3(); 
    } 
} 
+0

這適用於輸出任何cout <<。但是,嘗試使用這些功能時,它什麼也不顯示。我有一個函數打開一個文件,另一個打開另一個文件,然後在這些函數的結尾處我有一個文本。在調用if語句中的函數時,沒有文本存在 –

+0

我編輯了我的答案,將argc與2進行比較。如果您正在調用程序:'program.exe 1',那麼argc將是2。 –

相關問題