struct smt{
char *c;
};
int main(){
char *w="astring";
if(smt->c == w[0])
...do something
}我如何修复在if中得到的警告,以及到底是什么导致了警告?
发布于 2017-05-16 22:40:44
出现该警告是因为您正在将smt->c (即char* )与w[0] (这是一个字符)进行比较(在此比较中,会将其隐式强制转换为int)。
你的意思可能是像这样比较第一个字符:
if(smt->c[0] == w[0]) { ... }如果要比较完整的字符串,请使用
if(strcmp(smt->c, w) == 0) { ... }或者,如果您知道字符串的最大长度,则使用strncmp。
发布于 2017-05-16 22:40:05
错误来自于这样一个事实,即通常(几乎总是),你不想比较一个地址(指针)和一个字符。
您正在将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
https://stackoverflow.com/questions/44004475
复制相似问题