首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:指针和整数之间的比较

警告:指针和整数之间的比较
EN

Stack Overflow用户
提问于 2017-05-16 22:36:51
回答 2查看 516关注 0票数 0
代码语言:javascript
复制
struct smt{
char *c;
};



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

我如何修复在if中得到的警告,以及到底是什么导致了警告?

EN

回答 2

Stack Overflow用户

发布于 2017-05-16 22:40:44

出现该警告是因为您正在将smt->c (即char* )与w[0] (这是一个字符)进行比较(在此比较中,会将其隐式强制转换为int)。

你的意思可能是像这样比较第一个字符:

代码语言:javascript
复制
if(smt->c[0] == w[0]) { ... }

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

代码语言:javascript
复制
if(strcmp(smt->c, w) == 0) { ... }

或者,如果您知道字符串的最大长度,则使用strncmp

票数 1
EN

Stack Overflow用户

发布于 2017-05-16 22:40:05

错误来自于这样一个事实,即通常(几乎总是),你不想比较一个地址(指针)和一个字符。

您正在将char* c与char 'a‘进行比较。我相信你想做的是:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44004475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档