该程序如下
typedef struct Signal {
long int vr[4];
char name[4];
char Type;
char casuality[2];
};我想以这样的方式使用这个结构,例如:对于变量vr,我可以做vr[0]=1073741824,但是对于casuality,如果我赋值casuality[0]="output",就会显示出上面给出的错误。
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//
} 发布于 2015-07-31 11:37:53
在您的示例中,"output"是字符串文本,类型为char [7],casuality[0]为char类型。
显然,它们是不兼容的(一个是数组,另一个是简单的char),因此出现了错误。
有两种方法可以实现你想要的,
char casuality[2];更改为char *casuality[2];,然后分配将正常工作(但是,您不能修改字符串文本)。strcpy()将字符串文本的内容复制到数组中。发布于 2015-07-31 11:40:10
您正在尝试将一个字符串文本(由几个char组成)分配到由四个字符(Signal.name[0])组成的数组的第一个位置。
// a single char = a string literal, i.e., from const char* to char
(iname).name[0] = "Ball1_pos";这在类型上显然是不兼容的。
请注意,即使字符串文本足够短以适应变量name跨内存,您也需要一个函数(如strcpy或memcpy )将值赋给该内存。
特别是,以下几点将起作用:
strcpy(iname.name, "abc")(注意,字符串文本由编译器终止,strcpy包含\0)
为了使事情(希望)对你更清楚,以下几点将是等价的:
iname.name[0] = 'a'
iname.name[1] = 'b'
iname.name[2] = 'c'
iname.name[3] = '\0'https://stackoverflow.com/questions/31745224
复制相似问题