struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}
如何修复if中出现的警告以及exacly导致的警告?
答案 0 :(得分:1)
警告显示是因为您正在将smt->c
char*
与w[0]
进行比较,int
是一个字符(此比较的内容会隐式转换为{{} 1}})。
你可能意味着比较第一个字符:
if(smt->c[0] == w[0]) { ... }
如果要比较完整字符串,请使用
if(strcmp(smt->c, w) == 0) { ... }
甚至更好,如果您知道字符串可以有的最大长度,请使用strncmp。
答案 1 :(得分:0)
错误来自这样一个事实:经常(几乎总是),你不想将地址(指针)与角色进行比较。
您将char * c与char'a'进行比较。你想做的就是我相信:
struct smt{
char *c;
};
int main(){
char *w="astring";
// Here smt->c returns a char*
// w[0] gets you the first character, so 'a'
if(strcmp(smt->c, w) == 0)
...do something
}
如果您想比较两个字符串的前两个字符,则必须将[0]
添加到smt-> c