微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C 上的字符和字符串赋值问题来自指针的整数,没有强制转换?

如何解决C 上的字符和字符串赋值问题来自指针的整数,没有强制转换?

我对我的代码做了以下声明:

char bussola,com[1],pen;
int main()
{
   bussola = "oeste",pen = "up";

但由于某种原因,我在编译器上收到此错误

 main.c:18:10: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
 
 bussola = "oeste",pen = "up";
           ^             ^

因此,我不断收到类似这样的其他错误

main.c:51:17: warning: comparison between pointer and integer
 
 if (bussola == "oeste") 
              ^~

我该怎么办?

解决方法

您将一个 char 数组(AKA 字符串)分配给一个 char 变量,它们不是兼容的数据类型。 char 变量只能有单个 char 值(如 'a' 、 'F' 、 '2' 或 ' ')。使用单引号 (' ') 将字符解释为 char 变量很重要。 您可以使用 char * bussola 或 char bussola[LENGTH] 声明一个字符串,但您必须在声明中初始化数组:

char bussola[6] = "oeste";

如果以后想初始化,可以使用strcpy:

char bussola[6];
strncpy(bussola,"oeste",6);

请注意,字符串使用双引号 (" ") 而不是像字符那样的单引号。

,
char bussola[6],pen[3];

int main() {
   strcpy(bussola,"oeste");
   strcpy(pen,"up");
}
if(!strcmp(bussola,"oeste")

以上是您尝试执行的操作的正确语法。

考虑到这段代码,我建议彻底了解 C 中的字符串和字符概念以及 string.h 头文件函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。