当试图比较char *和'\'以查看它们是否相同时,我只使用了字符=='\',但它给了我这个警告信息,当我运行它时我得到了分段错误:11 。片段如下。
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 :(得分:3)
"?"
是一个字符串文字。
'?'
是一个字符文字。
"\\"
是一个字符串文字。
'\\'
是一个字符文字。
字符文字在C中的类型为int
而不是char
。
答案 1 :(得分:-1)
我认为问题在于你通过&#39; \\&#39;而不是&#34; \\&#34; special_character_is_in_pattern