struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}
如何解决我在if中得到的警告和导致它的原因?警告:指针和整数之间的比较
struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}
如何解决我在if中得到的警告和导致它的原因?警告:指针和整数之间的比较
错误来自事实,即经常(几乎总是),你不想比较一个地址(指针)与一个字符。
你正在比较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->ç
的警告显示,因为你”将smt->c
(char*
)与w[0]
进行比较,该字符是一个字符(对于该比较隐含地转换为int
)。
你可能是指比较的第一个字符是这样的:
if(smt->c[0] == w[0]) { ... }
如果你想比较完整的字符串,请使用
if(strcmp(smt->c, w) == 0) { ... }
,甚至更好,使用strncmp如果你知道最大长度字符串可以有。
阅读你的'if(smt-> c == w [0])',阅读错误信息,你应该明白:p – Nathan