首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型'const char *‘的变量不能分配给'char’类型的实体

类型'const char *‘的变量不能分配给'char’类型的实体
EN

Stack Overflow用户
提问于 2015-07-31 11:35:57
回答 2查看 3.6K关注 0票数 1

该程序如下

代码语言:javascript
复制
typedef struct Signal {
  long int vr[4];
  char name[4];
  char Type;
  char casuality[2];
};

我想以这样的方式使用这个结构,例如:对于变量vr,我可以做vr[0]=1073741824,但是对于casuality,如果我赋值casuality[0]="output",就会显示出上面给出的错误。

代码语言:javascript
复制
 void xmlRead()
 {
    struct FMU *fmu;
    struct Signal *var;
    struct Signal iname;
    (*var).vr[0]=1073741824;
    (*var).vr[1]=1073741825;
    (*var).vr[2]=1073741826;
    (*var).vr[3]=1073741827;
    (iname).name[0]="Ball1_pos";   //Here it is showing the error//
} 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 11:37:53

在您的示例中,"output"是字符串文本,类型为char [7]casuality[0]char类型。

显然,它们是不兼容的(一个是数组,另一个是简单的char),因此出现了错误。

有两种方法可以实现你想要的,

  1. char casuality[2];更改为char *casuality[2];,然后分配将正常工作(但是,您不能修改字符串文本)。
  2. 分配一个足够长的数组,并使用strcpy()将字符串文本的内容复制到数组中。
票数 3
EN

Stack Overflow用户

发布于 2015-07-31 11:40:10

您正在尝试将一个字符串文本(由几个char组成)分配到由四个字符(Signal.name[0])组成的数组的第一个位置。

代码语言:javascript
复制
// a single char = a string literal, i.e., from const char* to char
(iname).name[0] = "Ball1_pos";

这在类型上显然是不兼容的。

请注意,即使字符串文本足够短以适应变量name跨内存,您也需要一个函数(如strcpymemcpy )将值赋给该内存。

特别是,以下几点将起作用:

代码语言:javascript
复制
strcpy(iname.name, "abc")

(注意,字符串文本由编译器终止,strcpy包含\0)

为了使事情(希望)对你更清楚,以下几点将是等价的:

代码语言:javascript
复制
iname.name[0] = 'a'
iname.name[1] = 'b'
iname.name[2] = 'c'
iname.name[3] = '\0'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31745224

复制
相关文章

相似问题

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