2014-09-13 89 views
0

當試圖比較char *和'\'以查看它們是否相同時,我只是使用了字符=='\',但它給了我這個警告信息,當我運行它時,我得到了段錯誤:11。片段如下。爲什麼'\'被認爲是int?

int strcompare(char *string1, char *string2) { 
    int i = 0; 
    while(string1[i] != 0 & string2[i] != 0) { 
    if (string1[i] != string2[i]) { 
     return false; 
    } 
    i++; 
    } 
    return true; 
} 


int special_character_is_in_pattern(char *pattern) { 
    int i = 0; 
    while(i<32) { 
    char *character = &pattern[i]; 
    //int is_in = is_in_list(character, special_character_list); 
    return (strcompare(character, ".")|strcompare(character,"+")|strcompare(character,"?")|character == '\\') ? true : i++; 
    } 
    return false; 
} 

錯誤信息是這樣的:

a.c:39:102: warning: comparison between pointer and integer ('char *' and 'int') 
    return (strcompare(character, ".")|strcompare(character,"+")|strcompare(character,"?")|character == '\\') ? true : i++; 
                          ~~~~~~~~~^~~~~ 
a.c:50:49: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'char *' [-Wint-conversion] 
    printf("%d\n",special_character_is_in_pattern('\\')); 

需要一些幫助,感謝

+0

''x''是一個整數價值也是。由''\\''表示的字符僅僅是一個\。 – user2864740 2014-09-13 19:38:52

+0

'...「?」)| * character =='\\')?真:我++;'字符是一個指針可變的,而不是一個字符。 – wildplasser 2014-09-13 19:40:24

+0

我用*字符後沒有警告!謝謝:),但事情是它返回0這是錯誤的,當我執行此行:printf(「%d \ n」,special_character_is_in_pattern(「\\」)); – infinityplus1 2014-09-13 19:46:14

回答

3

"?"是一個字符串。

'?'是一個字符文字。

"\\"是一個字符串文字。

'\\'是一個字符文字。

和字符的類型爲int和C.不char

+0

但由於字符是一個字符*我怎麼比較它與字符串文字?我使用字符==「\\」? – infinityplus1 2014-09-13 19:42:11

+0

@否則''character'是你的源代碼中的'char *',如果你想比較一個單獨的字符,你必須解除引用'character'。還要注意'''是按位或運算符; '||'是邏輯OR運算符, – ouah 2014-09-13 19:45:06

+0

我使用*字符後沒有警告!謝謝:),但事情是它返回0這是錯誤的,當我執行此行:printf(「%d \ n」,special_character_is_in_pattern(「\\」));我也改變了|到||以及。 – infinityplus1 2014-09-13 19:49:33

-1

我認爲問題是,你通過「\\」,而不是「\\」 special_character_is_in_pattern

相關問題