2017-05-16 135 views
0
struct smt{ 
char *c; 
}; 



int main(){ 
    char *w="astring"; 
    if(smt->c == w[0]) 
    ...do something 
} 

如何解决我在if中得到的警告和导致它的原因?警告:指针和整数之间的比较

+0

阅读你的'if(smt-> c == w [0])',阅读错误信息,你应该明白:p – Nathan

回答

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->ç

1

的警告显示,因为你”将smt->cchar*)与w[0]进行比较,该字符是一个字符(对于该比较隐含地转换为int)。

你可能是指比较的第一个字符是这样的:

if(smt->c[0] == w[0]) { ... } 

如果你想比较完整的字符串,请使用

if(strcmp(smt->c, w) == 0) { ... } 

,甚至更好,使用strncmp如果你知道最大长度字符串可以有。

相关问题