如何比较指针和整数?

3

我正在尝试检查指针是否指向某个字符。

例如:

#include<stdio.h>
#include<string.h>
#define a 3
int func(char *);
int main()
{
char *s="a";
int type;
type=func(s);
printf("%d",type);

    return 0;
}
int func(char *s)
{
int type;
if(*s=="a") 
{
type=1;
}
return type;

}

但是我经常收到警告:警告:指针和整数之间的比较 if(*s=="a")

指针和整数可以进行比较吗?

有没有其他方法来解决这个问题?

我能否在不打印它的情况下找出 *s 指向的字母?


2
步骤1:使您的代码易于阅读的格式化。 - T.J. Crowder
2个回答

11

"a" 不是一个字符,而是一个字符串字面值。 'a' 才是你在这里寻找的字符字面值。

此外,在你的比较中,*s == "a" 实际上是指针"a",而*s是整数... * 解除了s的引用,导致存储在s所指地址处的char(一个整数)。然而,字符串字面值作为指向字符串"a"第一个字符的指针。

此外,如果你通过将其更改为*s == 'a'来修复比较,你只检查s第一个字符是否为'a'。如果你想比较字符串,请参见strcmp


1

char字符使用''而不是""进行封闭。

#include<stdio.h>
#include<string.h>
#define a 3
int func(char *);
int main()
{
char value = 'a';
char *s=&value;
int type;
type=func(s);
printf("%d",type);

    return 0;
}
int func(char *s)
{
int type;
if(*s=='a') //or if(*s==3)
{
type=1;
}
return type;

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接