我创建了一个typedef结构,如下所示,由4个字段组成 我已经插入了可以在下面看到的结构数组
typedef struct Signal {
long vr;
char name[20];
char Type[20];
char casuality[20];
} Signal;
我使用了如下所示的结构数组
void xmlRead()
{
int i;
Signal var[4];
var[0].vr=1073741824;
strcpy(var[0].name,"Ball1_pos");
strcpy(var[0].Type,"Real");
strcpy(var[0].casuality,"output");
var[1].vr=1073741825;
strcpy(var[1].name,"Ball2_pos");
strcpy(var[1].Type,"Real");
strcpy(var[1].casuality,"output");
var[2].vr=1073741826;
strcpy(var[2].name,"Ball1_vel");
strcpy(var[2].Type,"Real");
strcpy(var[2].casuality,"output");
var[3].vr=1073741827;
strcpy(var[3].name,"Ball2_vel");
strcpy(var[3].Type,"Real");
strcpy(var[3].casuality,"output");
for(i=0; i<=3; i++)
{
while(var[i].casuality="output") **//Here it is showing error as expression must have modifiable lvalue//**
{
//Some statements
}
}
}
答案 0 :(得分:2)
<强>被修改强>
它显示错误,因为你正在分配(我假设你想在这里比较)数组casuality
的基地址到字符串"output"
另一件事是你不能使用==
来比较字符串,因为它总是比较两个字符串的基地址而不是内容。
因此,要比较内容,您应该使用strcmp()
。所以你的while循环看起来像这样。
while(strcmp(var[i].casuality, "output") == 0)
答案 1 :(得分:0)
你应该使用函数strcmp
来比较C和循环中的字符串,如下所示:
while (strcmp(var[i].casuality,"output") != 0)
你的循环中的条件是一种矫揉造作,而不是两个字符串之间的比较。