2017-04-19 84 views
-1

因此,我不確定是否應該嘗試將argv [1]轉換爲int,或者是否可以將其保留爲char。但是我很難讓argv按照我想要的方式行事。將argv [1]存儲爲char或int中的C

我的終端輸入將看起來像這樣:

./a.out a 

其中的argv [1]可以是一個 '一' 或 'd'。

問題:試圖通過傳遞給它當if語句如:

int main(int argc, char *argv[]) 
{ 
    char *letter; 
    letter=argv[1]; 

    printf(" %s %s ", argv[1], letter); //THIS prints correctly 

//However, even when the input IS 'a', it will still print this: 

    if(letter != "a" || letter != "d") 
     printf("Input letter not 'a' or 'd'\n"); 
    else{//More stuff//}  
} 

我得到的各種錯誤,當我試圖修復它自己。我看到一些解釋argv [1] [0]並使用atoi的線程,但是在玩了它之後,我無法打印出來。

+0

您正在使用C或C++只寫?他們是不同的語言,有不同的答案。請不要標記兩者,除非問題具體是關於差異。 – aschepler

+0

對不起,這只是在C.我刪除了標籤,謝謝澄清! – Marcus

+5

使用'strcmp'比較字符串。不要以你的方式比較指針。 –

回答

0

將指針argv[1]的值與字符串文字的第一個字符"a""d"的地址進行比較是沒有意義的。

#include <string.h> 

//... 

if(letter == NULL || (strcmp(letter, "a") != 0 && strcmp(letter, "d") != 0)) 
     printf("Input letter not 'a' or 'd'\n"); 
+0

謝謝!完美地工作! – Marcus

+0

@Marcus根本沒有。不用謝。:) –