2016-04-18 76 views
-2

所以我工作的一個項目創建和使用shell。必須做的一件事是「|執行| -P |提示|。應該允許用戶選擇一個用戶自定義的提示,否則,默認的應該是‘257sh>’我寫我的代碼來做到這一點。然而不管是什麼它一直移動到else語句。經過一些嘗試,我知道,我的argv[1] == "-p"線是什麼原因造成的問題,因爲沒有它的代碼工作。事情是,當我打印出來的argv [1],它打印「-p」 (假設這就是我輸入)。這是我的外殼功能。比較C字符串與字符串指針平等

void shellLoop(char *n) 
{ 
    char *line; 
    char **args; 
    int status; 
    char name = n; 

    do{ 
     printf("%s>", n); 
     line = sysReadLine(); 
     args = splitLine(line); 
     status = execute(args); 

     free(line); 
     free(args); 
    }while(status); 
} 

這裏是我的主要功能

int main(int argc, char *argv[]) 
{ 
    if(argc == 3 && argv[1] == "-p"){ 
     shellLoop(argv[2]); 
    } 
    else{ 
     shellLoop("257sh"); 
    } 

    return EXIT_SUCCESS; 
} 
+3

'的argv [1] == 「-p」':使用'strcmp'代替''==在C. – BLUEPIXY

回答

2

當你做argv[1] == "-p"ÿ ou比較兩個指針和兩個永遠不會相同的指針。

比較C字符串使用strcmp功能:strcmp(argv[1], "-p") == 0

1

您還可以使用STRNCMP(字符* STR1,字符* STR2,INT N)來比較兩個字符串的第n個字節。

+0

「也」 意味着實際示出的方法的工作 - 這事實並非如此。而且,由於兩個字符串都被保證爲'nul'結尾,因此'strncpy'不是必需的。 – Olaf