2013-06-27 69 views
-1

我正在使用通過GUI進行操作的軟件,並且我的任務是編寫函數以使其通過Windows命令行運行,我不確定如何通過Windows代碼執行代碼int argcchar** argv。有人可以給我一個小例子。我是C新手,所以這有點凌駕於我的頭上。通過Windows命令行操作GUI

它應該像「參數A」調用「功能1」,然後下一個參數可以是「參數B」,它調用「功能2」或「參數C」調用「功能3」。

Parameter_1(Paramter_2 | Parameter_3)

+1

你問如何做只是命令行界面,還是如何同時擁有命令行界面和GUI界面? –

+0

當你說一個參數調用一個函數時,你是什麼意思?你是在談論允許像函數指針和函子那樣的函數回調的類型,還是你的意思是別的? – greatwolf

+0

相同程序的命令行和GUI。該程序需要能夠從Windows命令行調用。這是在C和回答偉大的狼評論。如果輸入「參數B」,它將執行可能是2 + 2 = 4的「功能2」,但是如果輸入「參數C」,它將執行可能是3 + 3 = 6的「功能3」感。 – user2517789

回答

0

要回答你的第一個問題,我建議建立兩個不同的應用程序,一個命令行,一個用於GUI。兩者之間唯一的區別在於,它是用處理命令行輸入的代碼構建的,另一個代碼使用GUI界面。這兩者可以共同使用其他接口不可知的代碼,這意味着無論接口如何,它都可以工作。

對於第二個問題,這裏有很多關於命令行解析的教程,like this one我花了十秒鐘找到。

0

您需要遍歷傳遞給main()的參數,並根據您找到的任何匹配調用函數。一個基本main()函數如下所示

int main(int argc, char *argv[]) 
{ 
    return 0; 
} 

argc是參數的數目和argvchar指針的數組含有個別參數空調風格串。下面的基於C的例子應該讓你開始。

(雖然你標記爲C和C你的問題++你只提下,在你的問題所以這是我選擇的例子的語言。)

#include <string.h> 
#include <stdio.h> 

void execA() 
{ 
    // ... do something 
} 

void execB() 
{ 
    // ... do something 
} 

void execC() 
{ 
    // ... do something 
} 

int main(int argc, char *argv[]) 
{ 
    for(int i = 1; i < argc; i++) 
    { 
     if(0 == _stricmp("paramaterA", argv[i])) 
     { 
      execA(); 
     } 
     else if(0 == _stricmp("paramaterB", argv[i])) 
     { 
      execB(); 
     } 
     else if(0 == _stricmp("paramaterC", argv[i])) 
     { 
      execC(); 
     } 
     else 
     { 
      fprintf(stderr, "Unknown parameter: %s", argv[i]); 
     } 
    } 

    return 0; 
} 
+0

謝謝你。這似乎工作。如果我想在傳入初始參數後包含用於上傳引導和應用程序文件的參數,我該如何編碼? – user2517789

+0

添加一個標誌和一個變量或兩個從參數處理程序中獲取的設置(例如用'flag = true; flagArgs = argv [i]'替換'execC();'並檢查該標誌並在''for'循環。對於已經提供瞭解釋的SO,也有很多答案。 –