2014-02-27 39 views
0

所以我試圖在啓動程序時使用cmd參數,但是我一直在遇到將變量從char轉換爲int的問題,所以它們可以與程序的其餘部分一起使用。感謝提前幫助。如何使用數組獲取命令行參數?

int main(int argc, char* argv[]) { 
    int n = 0, a = 0, b = 0, func = 0, choice = 0; 
    double w; 
    if(argc < 10) 
    { 
     cout << "The Program requires -f <Function> -a <Starting Point> -b <Ending Point> -m <Method> -n <Number of slices>" << endl; 
     exit(0); 
    } 
    else 
    { 
     int func, a, b, choice, n; 
     int i; 
     for(int i = 1; i < argc - 1; i+=2) 
     { 
       if(argv[i] == "-f"){ 
        func = *argv[i + 1];} 
       else if(argv[i] == "-a"){ 
        a = *argv[i + 1];} 
       else if(argv[i] == "-b"){ 
        b = *argv[i + 1];} 
       else if(argv[i] == "-m"){ 
        choice = *argv[i + 1];} 
       else if(argv[i] == "-n"){ 
        n = *argv[i + 1];} 
       else { 
        cout << "Input is Invalid" << endl; 
        exit(0);} 
       cout << argv[i] << endl; 
     } 
     w = (b-a)/double(n); 
     next(n, a, b, w, func, choice); 
    } 
    return 0; 
} 

編輯:所以我重組我的代碼看起來像上面,它編譯,但我只得到else語句。例如,當使用如下行的方式啓動程序時:./a3 -f 5 -a 1 -b 10 -m 3 -n 100.我不確定爲什麼程序返回到else語句「input is Invalid」其他如果,如果其他語句。

+0

這是什麼問題?編譯器的輸出是什麼?你得到了哪些錯誤? – MatthiasB

+1

爲什麼你重新定義你的變量'char * func,a,b,choice,n;'? –

+0

'char * func,a,b,choice,n'應該是'int func,a,b,choice,n'。 – Simple

回答

0

老兄,你必須先從:

int n = 0, a = 0, b = 0, func = 0, choice = 0; 

,然後你有一個字符指針被定義爲

char* func, a, b, choice, n; 

相信在標準的整數類型,指針應指向其類型,那是你的問題。

解決方案:

我想你可以用它強制轉換爲字符分配的師生比前..

0

你有一個字符串比較的問題。

if(argv[i] == "-f") 

不檢查的argv [i]是等於「-f」它檢查是否指針的值是相同的指針常量字符串「-f」與是錯誤的。 你應該使用像strcmp這樣的字符串比較方法。

也是所有標誌都需要價值爲何循環是:

for(int i = 1; i < argc; i++) 
    { 
    if(i + 1 != argc) 

,因爲這對你可以寫爲:

for(int i = 1 ; i < argc - 1; i += 2)