2013-08-12 117 views
1

我想比較用戶輸入與$$以查看它是否與用戶輸入的參數之一匹配。我也想比較看看`tty' &是否與用戶輸入的參數之一匹配。 類似:

int main(int argc, char **argv) 
{ 
    if (argv[4] == '`tty` &') { //line 31 
    fprintf(stderr, "error %s\n", argv[4]); 
    return(1); 
    } 

    if (argv[2] == '&&') { //line 36 
    fprintf(stderr, "error%s\n", argv[2]); 
    return(1); 
    } 
} 

我得到錯誤信息

ai.c:31:21: warning: character constant too long for its type 
ai.c: In function ‘main’: 
ai.c:31: warning: comparison between pointer and integer 
ai.c:36:21: warning: multi-character character constant 
ai.c:36: warning: comparison between pointer and integer 

請幫助。

回答

0

當你比較C,你應該使用strcmp以及什麼Femaref上試圖去整數argc

if (strcmp (argv[4], "`tty` &") != 0) 

也,爲了不得到一些例外說,你應該檢查數量串在args參數:

if(argc >=5) 
+0

偉大的!它現在的作品 – Gantavya

+0

很高興成爲服務@Gantavya :) –

0
  1. 的argc爲int。所以你不能下標這個。
  2. 對於字符串,你需要雙引號。
  3. 您應該嘗試使用strcmp/strncmp函數來比較字符串。

閱讀一本不錯的C書。在這裏下載K & R

0

第一個''僅適用於字符,並且用於字符串輸入。它無法工作。 然後,您無法使用strcmp將字符串條目與'=='進行比較。 要完成的錯誤錯誤:下標值既不是數組,也不指針由於使用的argc代替的argv ...

你的代碼應該是:

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

int main(int argc, char ** argv) { 

if (strcmp(argv[4], "`tty` ") == 0) { //line 31 
    fprintf(stderr, "error %s\n", argv[4]); 
    return(1); 
} 
if (strcmp(argv[2],"&&") == 0) { //line 36 
    fprintf(stderr, "error%s\n", argv[2]); 
    return(1); 
} 
} 
+0

多數民衆贊成在我正在尋找 – Gantavya