2014-09-13 88 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

相关问题